AWS에서의 현대적 애플리케이션 개발 1/4

빌드업웍스
14 min readApr 12, 2020

--

AWS의 클라우드 네이티브 최신 애플리케이션 개발 및 디자인 패턴

https://AWS.amazon.com/ko/

본 문서는 총 4부로 구성되어 있으며 이 글은 1부입니다.

1부 링크 : AWS에서의 현대적 애플리케이션 개발 1/4

3부 링크 : AWS에서의 현대적 애플리케이션 개발 3/4

4부 링크 : AWS에서의 현대적 애플리케이션 개발 4/4

요약

컨테이너 및 서버리스 기술을 사용한 최신 애플리케이션 개발은 조직이 혁신을 가속화하는 데 도움이 될 수 있습니다. 이 백서에는 AWS 클라우드에서 최신 애플리케이션을 구축하는 데 사용할 수 있는 중요한 모범 사례 및 디자인 패턴에 대한 정보가 포함되어 있습니다.

소개

현대 기업들은 점점 더 글로벌해지고 있고, 그들의 제품들은 점점 더 디지털화되고 있습니다. 클라우드 인프라, 모바일 애플리케이션, 빅데이터 파이프라인 및 소셜 미디어와 같은 이러한 디지털 제품은 애플리케이션 개발에 영향을 미치고 있으며, 이는 기업에 전례 없는 변화의 속도를 필요로 합니다. 이러한 속도를 달성하기 위해 비즈니스 리더는 자신의 문화, 프로세스 및 기술을 이 디지털 시대의 새로운 현실에 맞게 조정해야 합니다.

인적 자원을 최대한 활용하고, 새로운 기회를 발굴하고, 새로운 아이디어를 육성하여 성장을 이끌어야 하는 현대 기업에게는 빠른 혁신이 필수적입니다. 디지털 기술은 이러한 급속한 혁신의 핵심입니다.

혁신 플라이휠 가속화

거의 모든 업종의 기업들은 전례 없는 변화의 속도를 경험하고 있으며, 빠른 혁신은 그 속도를 향상시키는 데 매우 중요합니다. 미지의 소규모 경쟁업체는 혁신에 집중함으로써 수개월 내에 앞서 나갈 수 있으므로, 혁신뿐 아니라 신속하게 혁신하는 것이 필수적입니다.

아마존은 실험이 여러분이 더 빨리 혁신을 할 수 있도록 해준다는 것을 배웠습니다. 혁신을 가속화하기 위해 실험을 수행하고, 사용자 피드백을 청취하고, 다시 실험합니다. 사용자는 실패를 두려워하지 않고, 각 실험에서 배운 것을 미래의 노력에 적용합니다. 우리는 이것을 혁신 플라이휠이라고 부릅니다. 이 플라이휠을 빠르게 회전시키려면 제품을 출시하고 피드백을 수집하고 새로운 기능을 추가한 후 다시 출시할 수 있는 시스템이 필요합니다. 최신 애플리케이션의 기능을 통해 이러한 프로세스가 가능하며, 빠른 혁신을 통해 플라이휠을 회전하고 경쟁 우위를 확보할 수 있습니다.

최신 응용 프로그램 개발

가장 성공적인 기업은 경쟁 업체와 차별화되는 기술입니다. 회사가 계속 성장하고 성공하려면 새로운 제품을 빠르게 발명해야합니다. 이를 가능하게하는 혁신 문화를 촉진하기 위해 성공적인 회사는 지속적으로 응용 프로그램의 설계, 구축 및 관리 방법을 업데이트합니다. 우리는 이것을 현대적인 응용 프로그램 개발이라고 합니다.

최신 애플리케이션 개발은 기업이 보다 빠르게 혁신 할 수 있도록함으로써 경쟁력을 제공합니다. 혁신을 포용하는 기업은 인프라 관리 및 프로비저닝과 같은 미분화 작업에서 자원을 보다 가치 있는 활동으로 전환함으로써 더 많은 실험을 완료하고 아이디어를 보다 신속하게 출시 할 수 있습니다.

현대적인 응용 프로그램 개발 사례를 통해 기업은 혁신에 따른 속도와 민첩성을 실현할 수 있습니다. 일부 고객은 온 프레미스 가상 머신 (VM)을 가져 와서 Amazon Elastic Compute Cloud (Amazon EC2)에서 호스트하도록 리프트 앤 시프트라고도 합니다. 다른 고객은 애플리케이션 플랫폼을 클라우드에 최적화 된 컨테이너 기반 모델로 변경합니다. 또 다른 회사는 모 놀리 식 애플리케이션을 리팩토링하고 마이크로 서비스 기반 아키텍처로 전환합니다. 대부분의 회사는 더 많은 클라우드 네이티브 애플리케이션을 구축 할 때 관리 오버 헤드에 더 적은 시간을 소비하며 핵심 비즈니스에 더 집중할 수 있다는 것을 알게 됩니다.

최신 응용 프로그램 기능

최신 응용 프로그램은 다음과 같아야 합니다.

· 보안 — 모든 응용 프로그램의 보안이 중요합니다. 보안 조치는 응용 프로그램의 특정 부분뿐만 아니라 모든 계층과 수명 주기의 각 단계에서 구현해야 합니다.

· 복원력 — 최신 애플리케이션은 복원력이 뛰어납니다. 예를 들어, 외부 데이터 소스를 호출 할 때 응용 프로그램에 오류가 발생하면 기능이 정상적으로 저하 된 상태에서 계속 작동하면서 응답하지 않는 예외를 다시 시도하거나 처리해야합니다. 이 패턴은 마이크로 서비스 아키텍처 및 다른 서비스와의 상호 작용에도 적용됩니다.

· 탄력적 — 최신 애플리케이션은 요청 비율 또는 기타 메트릭에 따라 유연하게 확장 및 확장 할 수 있으므로 비즈니스 기회를 놓치지 않고 비용을 최적화 할 수 있습니다. 확장 및 확장 프로세스를 자동화하거나 자동 확장 기능이 포함 된 관리 서비스를 사용하면 일상적인 관리 부담이 줄어들고 중단이 심각하게 중단되는 것을 방지 할 수 있습니다.

· 모듈식 — 최신 응용 프로그램은 높은 응집력과 느슨한 결합으로 모듈식입니다. 더 큰 시스템은 단일 모놀리스가 아니라 도메인 경계를 따라 서로 다른 구성 요소로 분리되어야 합니다. 이러한 분리를 통해 가용성과 확장 성이 향상 될 뿐만 아니라 다른 구성 요소를 독립적으로 배포 할 수 있으므로 빈번한 릴리스가 더 쉽습니다.

· 자동화 — 최신 고품질 릴리스가 가능하도록 최신 응용 프로그램의 통합 및 배포를 자동화해야 합니다. 오류가 발생하기 쉬울 뿐만 아니라 수동 프로세스는 단일 관리자에게 배포를 요구하는 등 개인에 대한 의존성을 유발할 수 있습니다. 민첩한 개발 및 빈번한 릴리스를 지원하려면 CI / CD (Continuous Integration and Continuous Delivery) 파이프 라인을 통해 최신 응용 프로그램을 배포해야 합니다. CI / CD 모델에서 코드는 버전 제어로 푸시 되고 깨끗한 CI 환경에서 테스트가 실행되며 모든 테스트가 통과되면 배포가 자동으로 수행됩니다.

· 상호 운용성 — 최신 응용 프로그램에서 각 서비스는 다른 서비스와 상호 작용하고 요청 된 리소스를 제공하며 예상되는 작업을 수행해야 합니다. 다른 서비스에 독립적으로 기능을 추가하고 다른 서비스에 영향을 미치지 않으면 서 자주 릴리스 할 수 있어야합니다. 즉, 서비스는 구현 세부 정보를 비공개로 유지해야하며 강력한 공개 API를 통해 필요한 모든 기능을 노출해야 합니다. 이러한 공개 API는 독립적 인 릴리스를 허용하기 위해 안정적이고 역 호환되어야 합니다.

최신 응용 프로그램을 구현하는 데 사용할 수있는 다양한 방법이 있습니다. 이 백서에는 컨테이너 및 서버리스 기술을 사용하여 클라우드에 애플리케이션을 배포하는 방법에 대한 정보가 포함되어 있습니다.

최신 응용 프로그램 개발 모범 사례

고객 및 자체 개발 팀과의 대화를 통해 혁신적인 아이디어를 시장에 빠르게 도입하는 조직이 공유하는 몇 가지 최신 애플리케이션 개발 모범 사례가 있음을 발견했습니다.

보안 및 규정 준수

AWS 클라우드에서 시스템을 구축 할 때는 항상 보안 및 규정 준수로 시작하는 것이 좋습니다. 전체 응용 프로그램 수명주기를 확보하면 조직은 혁신 속도를 유지하면서 보안 위협을 해결할 수 있습니다.

예를 들면 다음과 같습니다.

· 인증 — 악의적인 액세스를 방지하는 권한 설정으로 시스템에 대한 액세스를 제어합니다. AWS 관리자는 AWS Identity and Access Management (IAM) 자격 증명을 사용하거나 Microsoft Active Directory 또는 SAML 자격 증명 공급자와의 통합을 통해 AWS 콘솔에 로그인 할 수 있습니다. AWS 기반의 애플리케이션은 Amazon Cognito를 활용하여 최종 사용자가 리소스를 인증하고 액세스 할 수 있습니다.

· 권한 부여 — 지나치게 복잡한 관리없이 리소스 사용을 제한하는 유연한 정책으로 역할 기반 액세스 제어를 구현합니다. IAM은 모든 AWS 리소스에 대한 세부적인 권한 부여 정책을 제공합니다.

· 감사 및 거버넌스 — 워크로드의 동작을 평가하고 준수 요구 사항 및 조직의 표준을 준수하는지 확인하십시오. AWS CloudTrail은 AWS API와의 상호 작용을 감사 할 수 있으며 Amazon CloudWatch와의 로그 집계를 통해 애플리케이션을 감사 할 수 있습니다. AWS Config는 AWS 리소스가 조직의 표준에 맞게 구성되도록 할 수 있습니다.

· 유효성 검사 — 응용 프로그램 기능의 모든 측면을 테스트하고 의도 한대로 작동하는지 확인합니다. 지속적인 통합 및 지속적인 전달 (CI / CD)로 가능한 한 검증을 자동화하십시오.

최신 응용 프로그램은 철저하고 자주 테스트해야하지만 개발 속도를 줄여서는 안됩니다. 마찬가지로 개발자 권한을 제한해야하지만 필요한 액세스 권한을 취소해서는 안됩니다. 전체 애플리케이션 라이프 사이클에 보안을 구축하고 보안 프로세스 및 표준을 자동화하고 지속적으로 재평가하십시오.

마이크로 서비스 아키텍처

모 놀리 식 응용 프로그램이 커짐에 따라 응용 프로그램을 수정하거나 기능을 추가하고 특정 변경과 관련된 코드베이스 부분을 추적하기가 어려워집니다. 결과적으로 작은 변경 사항에는 긴 회귀 테스트가 필요할 수 있으며 새로운 기능의 개발이 느려질 수 있습니다. 마이크로 서비스 아키텍처와 느슨하게 결합 된 구성 요소로 구축 된 응용 프로그램에서는 단일 서비스 수준에서 많은 새로운 기능과 버그 수정을 구현하여 훨씬 더 빠르게 릴리스 할 수 있습니다.

모놀리식 레거시 애플리케이션이 있는 조직은 애플리케이션을 마이크로 서비스로 재 설계하여보다 민첩하고 유연해질 수 있습니다. 각 서비스는 별도로 배포되며 모든 서비스는 모 놀리 식 시스템과 동일한 기능을 제공하기 위해 함께 작동합니다. 마이크로 서비스를 신속하게 구축, 수정 및 출시 할 수 있어 보다 빠른 실험과 혁신이 가능합니다. 마이크로 서비스를 구축하는 각 팀은 자체 설계, 개발, 배포 및 운영에 대한 소유권을 명확하게 가질 수 있습니다.

이 느슨한 결합을 달성하려면 시스템의 마이크로 서비스가 서로 통신해야 합니다. 서비스간에 공유되는 데이터 저장소는 긴밀한 결합, 숨겨진 종속성, 타이밍 문제 및 확장 및 가용성 문제를 일으킵니다. 게시 된 API 또는 비동기 메시지 큐를 사용하여 별도의 서비스간에 통신하는 것이 좋습니다. 프로세스를 대기열의 메시지로 연결된 여러 조각으로 분리하면 명확한 트랜잭션 경계가 생겨 서비스를 보다 독립적으로 운영 할 수 있습니다.

메시징 시스템은 다음 특성으로 인해 확장 성, 탄력성, 가용성, 일관성 및 분산 트랜잭션을 제공 할 수 있습니다.

· 신뢰할 수 있고 탄력적 인 메시지 전달 시스템

· 비 차단 및 단방향 작동

· 느슨하게 연결된 서비스

· 시스템의 서로 다른 논리적 구성 요소에 중점을 두고 각각 독립적으로 작동

이러한 요소를 활용하는 아키텍처는 강력한 API 및 비동기 통신 채널을 쉽게 노출 할 수 있으므로 각 서비스를 독립적으로 운영 및 자동화 할 수 있으며 안정성도 향상됩니다.

프로세스를 수행하기 위해 많은 다른 마이크로 서비스가 연결되어있는 경우 단일 종단 간 작업의 상태를 모니터링 할 수있는 방법이 있어야합니다. 또한 필요한 모든 단계가 올바른 순서로 올바른 시간에 수행되는지 확인해야합니다. 상태 시스템을 사용하여 작업 상태를 모니터링하고 올바른 순서로 발생하는지 확인할 수 있습니다.

또한 서비스 간 전반적인 워크 플로를 관리하고 다양한 시간 제한, 취소, 장기 실행 작업에 대한 하트 비트 및 세부 모니터링 및 감사를 구성 할 수있는 방법이 필요합니다. 이 유형의 툴링으로 서비스를 관리하면 속도, 생산성 및 유연성이 향상됩니다. 마이크로 서비스가 적절한 타이밍으로 올바른 순서로 실행되도록 현대 응용 프로그램은 오케스트레이션 및 메시징 도구를 활용합니다. 오케스트레이션 도구를 사용하면 반복 가능한 방식으로 강력한 서비스를 쉽게 구축 할 수 있습니다. AWS Step Functions는 여러 서비스에서 임의의 워크 플로를 조정할 수 있는 완전히 관리되는 도구입니다. 메시징 도구를 사용할 때 서비스 간의 직접적인 종속성을 제거하여 안정성과 확장 성을 향상시킵니다. 특정 작업에 따라 Amazon SQS (Amazon Simple Queue Service), Amazon CloudWatch Events 및 Amazon Kinesis와 같은 다양한 도구를 사용할 수 있습니다. 오케스트레이션 및 메시징 도구를 함께 사용하면 개발자는 워크 플로 실행, 상태 관리 및 서비스 간 통신에 시간을 소비 할 필요가 없으므로 핵심 비즈니스 로직에 집중할 수 있습니다.

서버리스 기술 사용

조직의 응용 프로그램을 실행하는 서버 및 운영 체제 (OS)를 운영하고 유지 관리 할 때 시스템 관리자는 OS 보안 패치 적용과 같은 간단하고 반복적인 작업을 완료하는 데 시간을 소비해야 합니다. 요청 볼륨을 기준으로 확장하는 대신 가용성과 내구성 요구 사항을 신중하게 고려하면서 서버의 최대 볼륨을 미리 프로비저닝해야 합니다. 또한 사용량에 따라 비용을 지불하는 대신이 초과 프로비저닝 된 모든 인프라에 대한 비용을 미리 지불해야 할 수도 있습니다.

AWS Auto Scaling 및 AWS Systems Manager와 같은 서비스는 기존의 VM 기반 인프라에서 이러한 부담을 줄일 수 있지만 서버리스 기술로 시스템을 구축 할 때 서버를 프로비저닝하고 관리 할 필요는 없습니다. 관리자는 OS 패치에 시간을 소비하거나 사용하지 않는 리소스를 유지 관리하여 최대 사용량에 대비할 수 있습니다. 서버리스 응용 프로그램은 각 구성 요소의 정확한 요구를 충족하도록 확장됩니다. 안정성 및 내결함성도 기본적으로 기본적으로 내장되어 있어 시스템의 이러한 측면에 필요한 많은 설계 및 운영 시간이 필요하지 않습니다. 처음부터 서버리스 기술로 최신 응용 프로그램을 구축하면 응용 프로그램을 구축, 배포 및 실행하는 전체 수명주기를 안전하게 유지할 수 있습니다. 운영상의 복잡성을 제거하면 개발자는 고객을 만족시키는 제품을 만드는데 시간과 에너지를 집중할 수 있습니다.

AWS는 AWS Lambda3 및 AWS Fargate4와 같은 서버리스 컴퓨팅 서비스를 제공합니다. 객체 스토리지 용 Amazon Simple Storage Service (Amazon S3) 5가 있으며, 이제 빠르고 유연한 NoSQL 데이터베이스 인 Amazon DynamoDB6과 Amazon의 온 디맨드 및 자동 스케일링 구성 인 Amazon Aurora Serverless7의 두 가지 서버리스 데이터베이스 옵션이 있습니다. 오로라. 엔드-투-엔드 서버리스 애플리케이션을 구축하려는 경우 컴퓨팅, 데이터베이스 및 스토리지 서비스로는 충분하지 않을 수 있습니다. API 관리, 메시징 및 오케스트레이션에서 문제 해결 및 모니터링에 이르기까지 워크로드 전반에 걸쳐 다른 서버리스 AWS 제품을 사용할 수 있습니다.

AWS Fargate Icon

[ 고지 사항 (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.

--

--

빌드업웍스
빌드업웍스

Written by 빌드업웍스

클라우드 교육, 구축, 운영, 관리, 컨설팅 및 교육 리소스 디지털 퍼블리싱 : AWS 파트너, 유데미 파트너| buw.co.kr | admin@buw.co.kr | 053–954–3711

No responses yet