ในโมดูลนี้ คุณจะสร้างอิมเมจของคอนเทนเนอร์สำหรับแอปพลิเคชัน node.js ขนาดใหญ่ของคุณ และพุชไปยัง Amazon Elastic Container Registry เริ่มสร้าง

การนำมาใช้งานจริงใน Amazon ECR

คอนเทนเนอร์ช่วยให้คุณสามารถจัดเก็บโค้ด การกำหนดค่า และการขึ้นต่อกันของแอปพลิเคชันลงในส่วนประกอบที่ใช้งานง่าย ซึ่งทำให้เกิดความสอดคล้องกันของระบบ เกิดประสิทธิภาพในการทำงาน อัตราผลผลิตของนักพัฒนา และการควบคุมเวอร์ชัน คอนเทนเนอร์สามารถช่วยให้แน่ใจว่าสามารถนำแอปพลิเคชันมาใช้งานจริงได้อย่างรวดเร็ว เชื่อถือได้ และมีความสอดคล้องกัน ไม่ว่าจะนำมาใช้งานจริงในสภาพแวดล้อมแบบใดก็ตาม

ภาพรวมของสถาปัตยกรรม

ความรวดเร็ว
การเปิดใช้คอนเทนเนอร์ที่มีโค้ดรุ่นใหม่สามารถทำได้โดยไม่ต้องใช้ค่าใช้จ่ายที่สูงมากนักในการนำมาใช้งานจริง ความรวดเร็วในการทำงานได้รับการปรับปรุงให้ดีขึ้น เนื่องจากสามารถย้ายโค้ดที่สร้างในคอนเทนเนอร์ภายในเครื่องคอมพิวเตอร์ของนักพัฒนาไปยังเซิร์ฟเวอร์ทดสอบได้อย่างง่ายดายเพียงแค่ย้ายคอนเทนเนอร์ ในขณะที่สร้าง สามารถเชื่อมโยงคอนเทนเนอร์นี้กับคอนเทนเนอร์อื่นๆ ที่จำเป็นในการเรียกใช้สแตกแอปพลิเคชันได้

การควบคุมการขึ้นต่อกันและไปป์ไลน์ที่ได้รับการปรับปรุงให้ดีขึ้น
อิมเมจของคอนเทนเนอร์ Docker คือโค้ดและการขึ้นต่อกันของแอปพลิเคชัน ณ ขณะใดขณะหนึ่ง ซึ่งทำให้หน่วยงานวิศวกรรมสามารถสร้างไปป์ไลน์มาตรฐานสำหรับวงจรการทำงานของแอปพลิเคชันได้ ตัวอย่างเช่น:

  1. นักพัฒนาสร้างและเรียกใช้คอนเทนเนอร์ในเครื่องของตัวเอง
  2. เซิร์ฟเวอร์การบูรณาการอย่างต่อเนื่องรันคอนเทนเนอร์เดียวกัน และดำเนินการทดสอบการบูรณาการกับคอนเทนเนอร์เพื่อให้แน่ใจว่าผ่านความคาดหวัง
  3. คอนเทนเนอร์เดียวกันนี้จะถูกส่งไปยังสภาพแวดล้อมในการจัดเตรียม ซึ่งสามารถตรวจสอบลักษณะการทำงานของรันไทม์ได้โดยใช้การทดสอบปริมาณงานหรือ QA ด้วยตนเอง
  4. คอนเทนเนอร์เดียวกันนี้จะถูกส่งไปยังการใช้งานจริง

ความสามารถในการสร้าง ทดสอบ ส่ง และเรียกใช้คอนเทนเนอร์เดียวกันทุกประการตลอดทุกขั้นตอนของไปป์ไลน์การบูรณาการและการนำมาใช้งานจริง ทำให้สามารถส่งมอบแอปพลิเคชันคุณภาพสูงที่เชื่อถือได้โดยง่ายขึ้นอย่างน่าพอใจ

ความหนาแน่นและประสิทธิภาพของทรัพยากร
คอนเทนเนอร์ช่วยให้ทรัพยากรมีประสิทธิภาพที่ดีขึ้นด้วยการทำให้กระบวนการต่างๆ ที่ต่างกันทำงานในระบบเดียว ประสิทธิภาพของทรัพยากรเป็นผลลัพธ์ตามธรรมชาติของเทคนิคการแยกส่วนและการจัดสรรที่คอนเทนเนอร์ใช้ โดยสามารถจำกัดให้คอนเทนเนอร์ใช้ CPU และหน่วยความจำของโฮสต์ในปริมาณที่แน่นอนได้ ด้วยความเข้าใจว่าคอนเทนเนอร์ต้องใช้ทรัพยากรอะไรบ้าง และโฮสต์เซิร์ฟเวอร์ที่ใช้ทำงานมีทรัพยากรอะไรบ้าง คุณจะสามารถกำหนดขนาดของทรัพยากรในการประมวลผลที่คุณใช้ได้อย่างเหมาะสม โดยใช้โฮสต์ที่มีขนาดเล็กลง หรือเพิ่มความหนาแน่นของการประมวลผลที่ทำงานบนโฮสต์ขนาดใหญ่โฮสต์เดียว เพื่อเพิ่มความพร้อมในการใช้งานและปรับแต่งการใช้ทรัพยากรให้อยู่ในระดับที่เหมาะสม

ความยืดหยุ่น
ความยืดหยุ่นของคอนเทนเนอร์ Docker ขึ้นอยู่กับความสามารถในการเคลื่อนย้าย ความง่ายต่อการนำมาใช้งานจริง และขนาดที่เล็ก โดยตรงข้ามกับการติดตั้งและการกำหนดค่าที่จำเป็นต้องใช้บน VM บริการจัดเก็บภายในคอนเทนเนอร์ช่วยให้สามารถย้ายคอนเทนเนอร์ได้อย่างง่ายดายระหว่างโฮสต์ต่างๆ โดยแยกตัวออกจากบริการอื่นๆ ที่อยู่ใกล้เคียงกันที่ทำงานไม่ได้ และป้องกันจากโปรแกรมแก้ไขหรือการอัปเดตซอฟต์แวร์ที่ทำงานผิดพลาดบนระบบโฮสต์ 

เวลาดำเนินการ: 20 นาที

บริการที่ใช้:


สำหรับส่วนแรกของบทแนะนำสอนการใช้งานนี้ คุณจะสร้างอิมเมจของคอนเทนเนอร์ Docker สำหรับแอปพลิเคชัน node.js ขนาดใหญ่ของคุณ และพุชไปยัง Amazon Elastic Container Registry (Amazon ECR) เลือกหมายเลขขั้นตอนแต่ละหมายเลขเพื่อขยายส่วนนั้น

break-the-monolith
  • ขั้นตอนที่ 1 ทำการตั้งค่า

    ในสองสามขั้นตอนถัดไป คุณจะใช้ Docker, Github, Amazon Elastic Container Service (Amazon ECS) และ Amazon ECR เพื่อนำโค้ดมาใช้งานจริงในคอนเทนเนอร์ ในการดำเนินการตามขั้นตอนเหล่านี้ คุณต้องมีเครื่องมือต่อไปนี้

    1. มีบัญชี AWS: หากคุณยังไม่มีบัญชีกับ AWS คุณสามารถสมัครได้ที่นี่ แบบฝึกหัดทั้งหมดในบทแนะนำสอนการใช้งานนี้ได้รับการออกแบบให้รวมอยู่ภายใต้ AWS Free Tier
      ⚐ หมายเหตุ: บริการบางส่วนที่คุณจะใช้งานอาจกำหนดให้บัญชีของคุณใช้งานมากกว่า 12 ชั่วโมง หากคุณประสบปัญหากับบริการใดก็ตามและเพิ่งสร้างบัญชีขึ้นมาใหม่ โปรดรออีกสองสามชั่วโมงแล้วลองอีกครั้ง
    2. ติดตั้ง Docker: คุณจะใช้ Docker ในการสร้างไฟล์อิมเมจที่จะทำงานในคอนเทนเนอร์ของคุณ Docker เป็นโปรเจกต์แบบโอเพนซอร์ส ซึ่งคุณสามารถดาวน์โหลดได้สำหรับ Mac หรือ Windows
      หลังจากที่ติดตั้ง Docker แล้ว คุณสามารถยืนยันว่าทำงานได้โดยป้อน Docker --version ในเทอร์มินัล หมายเลขเวอร์ชันควรปรากฏขึ้นตามตัวอย่างดังนี้: Docker version 19.03.5, build 633a0ea
    3. ติดตั้ง AWS CLI:
      • คุณจะใช้ AWS Command Line Interface (AWS CLI) ในการพุชอิมเมจไปยัง Amazon ECR คุณสามารถเรียนรู้และดาวน์โหลด AWS CLI ได้ที่นี่
      • หลังจากที่ติดตั้ง AWS CLI แล้ว ตรวจสอบยืนยันว่าทำงานได้โดยป้อน aws --version ในเทอร์มินัล หมายเลขเวอร์ชันควรปรากฏขึ้นตามตัวอย่างดังนี้: aws-cli/1.16.217 Python/2.7.16 Darwin/18.7.0 botocore/1.12.207
      • หากคุณติดตั้ง AWS CLI เรียบร้อยแล้ว ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัลเพื่อให้แน่ใจว่าได้รับการอัปเดตเป็นเวอร์ชันล่าสุดแล้ว: pip install awscli --upgrade --user
      • หากคุณไม่เคยใช้ AWS CLI มาก่อน คุณอาจจำเป็นต้องกำหนดค่าข้อมูลประจำตัวของคุณ
    4. มีโปรแกรมแก้ไขข้อความ: หากคุณยังไม่มีโปรแกรมแก้ไขข้อความสำหรับการเขียนโค้ด ให้ติดตั้งลงในเครื่องคอมพิวเตอร์ของคุณ Atom คือโปรแกรมแก้ไขข้อความแบบโอเพนซอร์สง่ายๆ จาก GitHub ที่นักพัฒนานิยมใช้
  • ขั้นตอนที่ 2 ดาวน์โหลดและเปิดโปรเจกต์

    ดาวน์โหลดโค้ดจาก GitHub: ไปที่ https://github.com/awslabs/amazon-ecs-nodejs-microservices และเลือก Clone or Download (ลอกแบบหรือดาวน์โหลด) เพื่อดาวน์โหลดคลัง GitHub ไปยังเครื่องคอมพิวเตอร์ของคุณ คุณยังสามารถใช้ GitHub Desktop หรือ Git เพื่อลอกแบบคลังได้อีกด้วย

    เปิดไฟล์โปรเจกต์: เริ่มต้น Atom เลือก Add Project Folder (เพิ่มโฟลเดอร์โปรเจกต์) และเลือกโฟลเดอร์ที่คุณบันทึกคลัง amazon-ecs-nodejs-microservices ซึ่งจะเพิ่มทั้งโปรเจกต์ลงใน Atom เพื่อให้คุณทำงานได้อย่างง่ายดาย

    คุณควรเห็นโฟลเดอร์สำหรับ infrastructure (โครงสร้างพื้นฐาน) และ services (บริการ) ในโฟลเดอร์โปรเจกต์ของคุณ โฟลเดอร์โครงสร้างพื้นฐานจัดเก็บโค้ดการกำหนดค่าโครงสร้างพื้นฐานของ AWS CloudFormation ที่คุณจะใช้ในขั้นตอนถัดไป โฟลเดอร์ บริการ ประกอบด้วยโค้ดที่ประกอบเป็นแอปพลิเคชัน node.js

    สละเวลาเล็กน้อยเพื่อตรวจสอบไฟล์ และทำความคุ้นเคยกับแง่มุมต่างๆ ของแอปพลิเคชัน รวมทั้งฐานข้อมูล db.json, เซิร์ฟเวอร์ server.jspackage.json และแอปพลิเคชัน Dockerfile

    โปรเจกต์ไมโครเซอร์วิส
  • ขั้นตอนที่ 3 จัดให้มีคลังเก็บข้อมูล

    สร้างคลังเก็บข้อมูล:

    • ไปที่ Amazon ECR Console
    • เลือก Create Repository (สร้างคลัง) ในหน้า Repositories (คลัง)
    • ในหน้าสร้างคลัง ป้อนชื่อต่อไปนี้สำหรับคลังของคุณ: api
      ⚐ หมายเหตุ: ภายใต้ Tag immutability (การรักษาสภาพเดิมของแท็ก) ให้คงการตั้งค่าตามค่าเริ่มต้น
    • เลือก Create repository (สร้างคลัง)

    เมื่อสร้างคลังแล้ว ข้อความยืนยันจะปรากฏพร้อมที่อยู่ของคลัง ที่อยู่ของคลังจะอยู่ในรูปแบบต่อไปนี้: [account-ID].dkr.ecr.[region].amazonaws.com/[repo-name] [account-ID], [region] และ [repo-name] จะมีค่าเฉพาะสำหรับการตั้งค่าของคุณ

    ⚐ หมายเหตุ: คุณจะต้องใช้ที่อยู่ของคลังตลอดบทแนะนำสอนการใช้งานนี้

    สร้าง
  • ขั้นตอนที่ 4 สร้างและพุชอิมเมจ Docker

    เข้าถึงเทอร์มินัลของคุณและไปที่ไดเรกทอรีต่อไปนี้: ~/amazon-ecs-nodejs-microservices/2-containerized/services/api

    ใช้เทอร์มินัลเพื่อตรวจสอบความถูกต้องของข้อมูลการเข้าสู่ระบบ Docker:

    1. เรียกใช้ $(aws ecr get-login --no-include-email --region [your-region]) แทนค่า [your-region] เช่น $(aws ecr get-login --no-include-email --region us-west-2) ถ้าจำเป็น ให้กำหนดค่าข้อมูลประจำตัวของคุณ
      เมื่อตรวจสอบความถูกต้องเรียบร้อยแล้ว คุณจะได้รับข้อความยืนยัน: Login Succeeded (เข้าสู่ระบบเรียบร้อยแล้ว)
    2. เพื่อสร้างอิมเมจ เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล: docker build -t api
      ⚐ หมายเหตุ: ต้องใส่เครื่องหมายมหัพภาค (.) หลัง api ด้วย
    3. หลังจากที่การสร้างเสร็จสิ้นแล้ว แท็กอิมเมจเพื่อให้คุณสามารถพุชลงในคลังได้: docker tag api:latest [account-ID].dkr.ecr.[region].amazonaws.com/api:v1 
      ⚐ หมายเหตุ: แทนค่าเพลซโฮลเดอร์ของ [account-ID] และ [region] ด้วยข้อมูลเฉพาะของคุณ
      ⚐ เคล็ดลับอย่างมืออาชีพ:  :v1 หมายถึงเวอร์ชันการสร้างของอิมเมจ ทุกครั้งที่คุณสร้างอิมเมจ คุณควรเพิ่มหมายเลขเวอร์ชันนี้ หากคุณใช้สคริปต์ คุณสามารถใช้หมายเลขอัตโนมัติได้ เช่น การประทับเวลาเพื่อแท็กอิมเมจ นี่คือแนวปฏิบัติที่ดีที่สุดที่ทำให้คุณสามารถย้อนกลับเป็นการสร้างอิมเมจคอนเทนเนอร์ก่อนหน้าได้ในอนาคต
    4. พุชอิมเมจลงใน Amazon ECR โดยเรียกใช้: docker push [account-id].dkr.ecr.[region].amazonaws.com/api:v1
      ⚐ หมายเหตุ: แทนค่าชื่อแทนของ [account-ID] และ [region] ด้วยข้อมูลเฉพาะของคุณ

    หากคุณไปที่คลัง Amazon ECR ของคุณ คุณควรจะเห็นอิมเมจของคุณที่มีแท็กว่า v1

    แท็กอิมเมจของ Amazon ECR