AWS의 클라우드 네이티브 최신 애플리케이션 개발 및 디자인 패턴
본 문서는 총 4부로 구성되어 있으며 이 글은 4부입니다.
1부 링크 : AWS에서의 현대적 애플리케이션 개발 1/4
2부 링크 : AWS에서의 현대적 애플리케이션 개발 2/4
3부 링크 : AWS에서의 현대적 애플리케이션 개발 3/4
AWS에서의 지속적인 통합 및 지속적인 제공
CI (Continuous Integration) 및 CD (Continuous Delivery)는 최신 애플리케이션 개발의 가치를 인식하는 데 중요하므로 AWS에서 이러한 모범 사례를 구현하는 방법을 신중하게 고려해야합니다. AWS는 CI / CD를 사용한 배포 자동화 섹션에서 설명한대로 최신 애플리케이션을 빠르게 제공 할 수 있도록 여러 서비스를 제공합니다. 이러한 서비스는 완벽하게 관리되므로 개발팀은 CI 서버의 유지 관리 및 보안을 크게 강화하는 대신 배포 자동화 및 새로운 기능을 신속하게 제공하는 데 집중할 수 있습니다.
AWS의 CI / CD 서비스
AWS 클라우드에서 CI / CD 배포에 다음 AWS 서비스를 사용할 수 있습니다.
AWS Cloud9
AWS Cloud9는 브라우저만으로 코드를 작성, 실행 및 디버깅하는 데 사용할 수있는 클라우드 기반 통합 개발 환경 (IDE)입니다. 코드 편집기, 디버거 및 터미널이 포함되어 있습니다. AWS Cloud9에는 JavaScript, Python 및 PHP를 비롯하여 널리 사용되는 프로그래밍 언어를위한 필수 도구가 포함되어 있으므로 새 프로젝트를 시작하기 위해 파일을 설치하거나 개발 시스템을 구성 할 필요가 없습니다.
AWS Cloud9 IDE는 클라우드 기반이기 때문에 사무실, 가정 또는 인터넷에 연결된 머신이있는 어느 곳에서나 프로젝트를 수행 할 수 있습니다. 또한 AWS Cloud9은 서버리스 애플리케이션 개발을위한 완벽한 환경을 제공하므로 서버리스 애플리케이션의 로컬 및 원격 실행 간 리소스를 쉽게 정의하고 디버깅하고 전환 할 수 있습니다. AWS Cloud9을 사용하면 개발 환경을 팀과 신속하게 공유 할 수 있으므로 프로그램을 쌍으로 구성하고 서로의 입력을 실시간으로 추적 할 수 있습니다.
AWS CodeStar
AWS CodeStar를 사용하면 AWS 클라우드에서 애플리케이션을 빠르게 개발, 구축 및 배포 할 수 있습니다. AWS CodeStar는 통합 사용자 인터페이스를 제공하므로 소프트웨어 개발 활동을 한 곳에서 쉽게 관리 할 수 있습니다. AWS CodeStar를 사용하면 몇 분만에 전체 지속적 제공 툴체인을 설정할 수 있으므로 코드 릴리스를 더 빨리 시작할 수 있습니다. AWS CodeStar를 사용하면 전체 팀이 안전하게 협업 할 수 있습니다. 액세스를 쉽게 관리하고 소유자, 기고자 및 뷰어를 프로젝트에 추가 할 수 있습니다. 각 AWS CodeStar 프로젝트에는 작업 항목의 백 로그에서 팀의 최근 코드 배포에 이르기까지 전체 소프트웨어 개발 프로세스에서 진행 상황을 쉽게 추적하는 데 사용할 수있는 프로젝트 관리 대시 보드가 포함되어 있습니다.
AWS CodePipeline
AWS CodePipeline은 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프 라인을 자동화하는 데 도움이되는 완전 관리 형 연속 전송 서비스입니다. CodePipeline은 정의한 릴리스 모델에 따라 코드가 변경 될 때마다 릴리스 프로세스의 빌드, 테스트 및 배포 단계를 자동화합니다. 이를 통해 기능과 업데이트를 빠르고 안정적으로 제공 할 수 있습니다.
AWS CodeCommit
AWS CodeCommit은 안전한 Git 기반 리포지토리를 호스팅하는 완전 관리형 소스 제어 서비스입니다. 이를 통해 팀은 안전하고 확장 성이 뛰어난 생태계에서 코드 공동 작업을 쉽게 수행 할 수 있습니다. CodeCommit은 자체 소스 제어 시스템을 운영하거나 인프라 확장에 대해 걱정할 필요가 없습니다. CodeCommit을 사용하여 소스 코드에서 이진에 이르는 모든 것을 안전하게 저장할 수 있으며 기존 Git 도구와 완벽하게 작동합니다.
AWS CodeBuild
AWS CodeBuild는 소스 코드를 컴파일하고 테스트를 실행하며 배포 준비가 된 소프트웨어 패키지를 생성하는 완전 관리형 연속 통합 서비스입니다. CodeBuild를 사용하면 자체 빌드 서버를 프로비저닝, 관리 및 확장 할 필요가 없습니다.
CodeBuild는 지속적으로 확장되고 여러 빌드를 동시에 처리하므로 빌드가 대기열에 대기하지 않습니다. 사전 패키징 된 빌드 환경을 사용하여 신속하게 시작하거나 고유 한 빌드 도구를 사용하는 사용자 정의 빌드 환경을 만들 수 있습니다.
AWS CodeDeploy
AWS CodeDeploy는 Amazon Elastic Compute Cloud (Amazon EC2), AWS Fargate, AWS Lambda 및 온 프레미스 서버와 같은 다양한 컴퓨팅 서비스에 대한 소프트웨어 배포를 자동화하는 완전 관리형 배포 서비스입니다. AWS CodeDeploy를 사용하면 애플리케이션 배포 중에 새로운 기능을 신속하게 릴리스하고 다운 타임을 피할 수 있습니다. AWS CodeDeploy는 애플리케이션 업데이트의 복잡성을 처리합니다. AWS CodeDeploy를 사용하여 소프트웨어 배포를 자동화하면 오류가 발생하기 쉬운 수동 작업이 필요하지 않습니다. 서비스는 배포 요구에 맞게 확장됩니다.
AWS Amplify Console
AWS Amplify Console은 풀 스택 서버리스 웹 애플리케이션을 배포하고 호스팅하기위한 Git 기반 워크 플로우를 제공합니다. 풀 스택 서버리스 애플리케이션은 GraphQL 또는 REST API와 같은 클라우드 리소스로 구축 된 백엔드, 파일 및 데이터 스토리지, React, Angular, Vue 또는 Gatsby과 같은 단일 페이지 애플리케이션 프레임 워크로 구축 된 프론트 엔드로 구성됩니다. 풀 스택 서버리스 웹 애플리케이션 기능은 종종 브라우저에서 실행되는 프론트 엔드 코드와 클라우드에서 실행되는 백엔드 비즈니스 로직에 분산됩니다. 따라서 릴리스주기를 신중하게 조정하여 프런트 엔드와 백엔드가 호환되고 새로운 기능이 프로덕션 고객을 방해하지 않도록하기 때문에 애플리케이션 배포가 복잡하고 시간 소모적입니다. Amplify Console은 풀 스택 서버리스 애플리케이션을 배포하기위한 간단한 워크 플로우를 제공하여 애플리케이션 릴리스주기를 가속화합니다. 애플리케이션의 코드 리포지토리를 Amplify Console에 연결하면 프런트 엔드 및 백엔드에 대한 변경 사항이 모든 코드 커밋마다 단일 워크 플로로 배포됩니다.
다양한 응용 유형에 대한 CI / CD 패턴
AWS 클라우드에 배포 할 수있는 각 주요 유형의 최신 애플리케이션마다 CI / CD 패턴을 사용할 수 있습니다. 복잡한 CI 환경 설정 및 유지 관리에 대한 걱정없이 AWS 네이티브 개발 도구를 사용하여 CI / CD를 빠르게 구현할 수 있습니다. 다음은 AWS 클라우드에서 CI / CD 패턴을 사용하는 방법에 대한 몇 가지 예입니다.
단일 페이지 응용 프로그램 배포
단일 페이지 애플리케이션 (SPA)은 브라우저로 다운로드되는 정적 컨텐츠 (HTML, CSS, JavaScript 및 매체)로 구성되는 애플리케이션으로, 백엔드 API를 호출합니다. AWS Amplify Console을 사용하여 SPA를 신속하게 구축 및 릴리스 할 수 있습니다. AWS Amplify 콘솔은 GitHub37 또는 AWS CodeCommit와 같은 리포지토리에 새 코드가 푸시 된 시점을 자동으로 감지하고 정적 프런트 엔드 콘텐츠를 Amazon Simple Storage Service (Amazon S3)에 배포 한 다음 콘텐츠 전송 네트워크인 Amazon CloudFront를 통해 사용자에게 콘텐츠를 제공 할 수 있습니다. Amplify Console은 또한 GraphQL 및 REST API, 인증, 분석 및 Amplify CLI로 생성 된 스토리지를 사용하여 서버리스 백엔드에 변경 사항을 배포 할 수 있습니다.
컨테이너에 배포
AWS CodePipeline을 사용하면 최소한의 구성으로 Amazon Elastic Container Service (Amazon ECS) 컨테이너 오케스트레이션 서비스에 지속적으로 배포 할 수 있습니다. 소스 단계에서 AWS CodePipeline은 소스 코드 리포지토리의 변경 사항을 자동으로 감지합니다. 빌드 단계에서는 AWS CodeBuild를 사용하여 Docker 이미지를 빌드하고 Amazon Elastic Container Registry (ECR)와 같은 Docker 리포지토리로 푸시합니다. 마지막으로 AWS CodePipleline은 Amazon ECS에 배포합니다.
컨테이너에 배포 (Blue/Green 배포)
Amazon ECS 및 AWS CodeDeploy는 컨테이너에 대한 블루 / 그린 배포도 지원합니다. AWS CodeDeploy는 Amazon Elastic Load Balancing의 일종인 ALB (Application Load Balancer)를 사용하여 두 병렬 대상 그룹간에 트래픽을 원활하게 전환하여 Blue/Green 배포를 자동화합니다.
AWS Lambda에 대한 카나리아 배포
AWS CodeDeploy는 AWS Lambda에 대한 카나리아 배포도 지원합니다. AWS CodeDeploy는 Lambda의 트래픽 이동 기능을 사용하여 새로운 기능 버전의 점진적인 롤아웃을 자동화합니다. 이를 통해 두 버전간에 트래픽을 점진적으로 전환하고 위험을 줄이고 새로운 Lambda 배포의 영향을 제한 할 수 있습니다.
AWS CodeDeploy로 AWS Lambda 배포를 수행 할 때 다음과 같은 사전 정의 된 배포 구성 옵션 중 하나를 사용하거나 고유 한 사용자 지정 구성을 생성 할 수 있습니다. 이러한 모든 옵션을 사용하여 SAM (Serverless Application Model)을 기반으로 응용 프로그램을 배포 할 수도 있습니다.
결론
현대 기업은 경쟁 우위를 점하기 위해 전 세계에 걸쳐 그들의 범위를 넓히고 디지털 이니셔티브에 투자해야 합니다. 디지털 제품과의 사용자 상호 작용이 발전함에 따라 고객 경험이 향상되고 점점 더 다양한 사용자 풀을 만족시켜야 합니다. 사용자의 높은 기대를 충족시키기 위해 기업은 실패를 두려워하지 말고 끊임없이 사용자의 의견을 실험하여 제품에 반영해야 합니다.
최신 응용 프로그램 개발은 빠른 업데이트 및 릴리스를 가능하게하는 사고 방식 및 방법입니다. 이러한 현대적인 관행을 수용하는 개발 팀은 반복적인 작업을 자동화하고 가능한 한 관리되는 서비스를 사용하며 고객을 만족시키는 제품을 만드는 데 대부분의 시간을 소비함으로써 미분류 작업을 제거합니다.
최신 애플리케이션 개발 모범 사례를 성공적으로 채택하면 조직에서 빠르게 실험하고 혁신 할 수 있으며, 기본 AWS 서비스를 사용하여 이러한 사례를 구현하면 훨씬 빠르게 이동할 수 있습니다.
빌드업웍스에서 AWS 무료 컨설팅을 진행합니다.
AWS에 대하여 궁금하신 내용이 있으시거나, 도입을 검토 중이시라면 편하게 신청해주세요.
[ 고지 사항 (Disclaimer) ]
본 컨텐츠는 고객의 편의를 위하여 AWS 서비스 설명을 위해 제작, 제공된 것입니다. 만약 AWS 사이트와 컨텐츠 상에서 차이나 불일치가 있을 경우 AWS 사이트 (AWS.amazon.com)가 우선합니다. 또한 AWS 사이트 상에서 한글 번역문과 영어 원문에 차이나 불일치가 있을 경우(번역의 지체로 인한 경우 등 포함), 영어 원문이 우선합니다.
본 문서는 Modern Application Development on AWS (2019년, 영문) 내용에 기반하여 작성 되었습니다.
이 문서는 정보 제공의 목적으로만 제공됩니다. 본 문서의 발행일 당시 AWS의 현재 제품 오퍼링 및 실행방법 등을 설명하며, 예고 없이 변경될 수 있습니다. 고객은 본 문서에 포함된 정보나 AWS 제품 또는 서비스의 사용을 독립적으로 평가할 책임이 있으며, 각 정보 및 제품은 명시적이든 묵시적이든 어떠한 종류의 보증 없이 “있는 그대로” 제공됩니다. 본 문서는 AWS, 그 자회사, 공급업체 또는 라이선스 제공자로부터 어떠한 보증, 표현, 계약 약속, 조건 또는 보장을 구성하지 않습니다. 고객에 대한 AWS의 책임 및 의무는 AWS 계약에 의해 관리되며 본 문서는 AWS와 고객 사이의 어떠한 계약에도 속하지 않으며 계약을 변경하지도 않습니다.
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.