BLOG
AWS App2Container 는 서버에 설치하여 애플리케이션의 컨테이너화를 자동화할 수 있는 명령줄 도구인데요, 이를 사용하면 단일 서버를 컨테이너로 마이그레이션하는 프로세스를 단순화할 수 있습니다. 그러나 서버 집합이 있는 경우 모든 서버를 마이그레이션하는 프로세스는 시간이 많이 소요됩니다. 이 경우에는 App2Container를 사용하여 프로세스를 자동화한 다음 Chef, Ansible 또는 AWS Systems Manager 와 같은 구성 관리 도구를 활용할 수 있습니다. 오늘 포스팅에서는 AWS Systems Manager를 사용하여 App2Container를 확장하는 아키텍처에 대해 알아보겠습니다.
컨테이너로 마이그레이션하는 이유는 무엇입니까?
조직은 Containers on AWS 를 사용하여 안전하고 손쉬운 서비스로 이동할 수 있습니다. 용기는 경량, 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있는 소프트웨어의 독립 모음입니다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정이 포함될 수 있습니다. 컨테이너는 논리적 격리를 제공하며 호스트 환경에 관계없이 항상 동일하게 실행됩니다.
Windows Internet Information Server(IIS) 에서 호스팅 되는 .NET 응용 프로그램을 실행 중인 경우, EOL(수명 종료)에 도달하면 두 가지 옵션이 있는데요, 전체 서버 플랫폼을 마이그레이션하거나 다른 호스팅 플랫폼에서 웹사이트를 다시 호스팅하는 것입니다. 두 옵션 모두 수동 작업이 필요하며 레거시 워크로드에 구현하기에는 너무 복잡한 경우가 많습니다. 워크로드가 마이그레이션된 후에도 비용이 많이 드는 지속적인 패치 및 유지 관리를 수행해야 하기 때문입니다.
AWS App2Container로 현대화
컨테이너는 AWS App2Container 를 통해 이러한 레거시 워크로드에 사용할 수 있습니다. AWS App2Container는 .NET 및 Java 애플리케이션을 컨테이너화된 애플리케이션으로 현대화하기 위한 명령줄 인터페이스(CLI) 도구입니다. App2Container는 가상 머신, 온프레미스 또는 클라우드에서 실행되는 모든 애플리케이션의 인벤토리를 분석하고 구축합니다. App2Container는 전체 서버 OS를 마이그레이션할 필요성을 줄이고 필요한 특정 워크로드만 이동합니다.
컨테이너화하려는 애플리케이션을 선택한 후 App2Container는 다음을 수행합니다.
- 애플리케이션 아티팩트 및 식별된 종속성을 컨테이너 이미지로 패키징
- 네트워크 포트 구성
- 인프라, Amazon Elastic Container Service(ECS) 작업 및 Kubernetes 포드 정의를 생성합니다.
App2Container에는 컨테이너 이미지를 생성하기 위해 따라야 하는 특정 단계 및 요구 사항 세트가 있습니다.
- 각 서버에서 생성하여 아티팩트를 저장하는 아마존 심플 스토리지 서비스 (S3) 버킷 만들기
- Amazon S3 버킷 및 지정된 Amazon Elastic Container Registry(ECR)에 액세스할 수 있는 AWS Identity and Access Management(IAM) 사용자 생성
- 작업자 노드를 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 로 배포. 여기에는 아티팩트를 가져와 컨테이너로 변환하는 호환 가능한 운영 체제가 포함.
- 마이그레이션할 각 서버에 App2Container 에이전트 설치
- 컨테이너로 변환하려는 각 애플리케이션에 대해 각 서버에서 일련의 명령을 실행
- 작업자 노드에서 명령을 실행하여 컨테이너화 및 배포 수행
다음으로는 App2Container를 자동화하여 환경 전체에 이 기능을 배포하고 확장하는 데 필요한 시간을 줄이는 방법을 알아보겠습니다.
App2Container 확장
AWS App2Container는 단일 서버에서 애플리케이션을 컨테이너화하는 프로세스를 간소화합니다. 각 서버에 대해 App2Container 에이전트를 설치 및 초기화하고, 인벤토리를 실행하고 분석해야 합니다. 그러나 AWS Systems Manager를 사용하여 자동화를 통해 머신 플릿을 컨테이너화 할 때 시간을 절약할 수 있습니다. AWS Systems Manager를 사용하면 하나 이상의 서버에 적용할 수 있는 일련의 명령줄 단계로 문서를 생성할 수 있습니다.
App2Container는 또한 App2Container 분석 단계의 출력을 사용할 수 있는 작업자 노드 설정을 지원합니다. 이것은 애플리케이션의 새로운 컨테이너화된 버전에 배포할 수 있습니다. 이를 통해 최소 권한의 보안 모범 사례를 따를 수 있습니다. 작업자 노드만 컨테이너화된 애플리케이션을 배포할 수 있는 권한을 갖습니다. 서버를 마이그레이션하려면 분석 출력을 S3 버킷에 쓸 수 있는 권한이 필요합니다.
작업자 노드를 사용하려면 App2Container 프로세스를 두 부분으로 분리합니다.
- 분석: 마이그레이션할 대상 서버에서 실행되며 결과는 S3에 출력됩니다.
- 전개: 작업자 노드에서 실행되며 컨테이너 이미지를 Amazon ECR로 푸시합니다. 실행 중인 컨테이너를 Amazon ECS 또는 Amazon Elastic Kubernetes Service(EKS)에 배포할 수 있습니다.
그림 1. App2Container 확장 아키텍처 개요
구축 실습
그림 1에서 볼 수 있듯이 Amazon EC2 인스턴스를 작업자 노드로 설정하고, 분석 출력을 위한 S3 버킷과 두 개의 AWS Systems Manager 문서를 설정해야 합니다. 첫 번째 문서는 대상 서버에서 실행되며 App2Container를 설치하고 분석 단계를 실행합니다.
두 번째 문서는 작업자 노드에서 실행되고 컨테이너 이미지의 배포를 처리합니다. AWS Systems Manager는 하나 이상의 호스트를 대상으로 하므로 여러 서버에 대해 분석 단계를 병렬로 실행할 수 있습니다. 파일 또는 .Net 어셈블리 코드와 같은 결과 및 아티팩트는 그림 2와 같이 처리를 위해 사전 구성된 Amazon S3 버킷으로 전송됩니다.
그림 2. 컨테이너 마이그레이션 대상 서버
아티팩트가 생성된 후 작업자 노드에 대해 두 번째 문서를 실행할 수 있습니다. 그러면 Amazon S3 버킷의 모든 파일이 스캔되고 워크로드가 자동으로 컨테이너화됩니다. 결과 이미지는 그림 3과 같이 Amazon ECR로 푸시됩니다.
그림 3. 컨테이너 마이그레이션 변환
이 프로세스가 완료되면 Amazon ECS 및/또는 Amazon EKS를 사용하여 이러한 이미지를 배포하는 방법을 선택할 수 있습니다. 이미지와 배포가 테스트되고 마이그레이션이 완료되면 대상 서버와 마이그레이션 팩토리 리소스를 안전하게 폐기할 수 있습니다.
이 아키텍처는 .NET 웹 애플리케이션을 컨테이너화하는 자동화된 접근 방식을 보여줍니다. AWS Systems Manager는 검색, 패키지 생성 및 Amazon S3 버킷 게시에 사용됩니다. EC2 인스턴스는 패키지를 바로 사용할 수 있도록 컨테이너로 변환합니다. 마지막 단계는 변환된 컨테이너를 확장 가능한 컨테이너 리포지토리(Amazon ECR)로 푸시하는 것입니다. 이러한 방식으로 컨테이너 플랫폼(ECS 및 EKS)에 쉽게 통합할 수 있습니다.
요약
이 솔루션은 기존 .Net 기반 웹 사이트를 컨테이너로 직접 마이그레이션할 때 많은 이점을 제공합니다. 이 제안된 아키텍처는 AWS App2Container를 기반으로 하며 많은 대상에서 안전한 방식으로 도구를 자동화합니다. 모든 고객 포트폴리오와 애플리케이션 요구 사항은 고유하다는 점을 염두에 두는 것이 중요합니다. 따라서 비즈니스 및 애플리케이션 소유자와 함께 모든 마이그레이션 계획을 확인하고 검토하는 것이 중요합니다. 올바른 계획, 참여 및 구현을 통해 AWS Containers로 원활하고 신속하게 이동할 수 있습니다.
문의사항이 있으면 의견 섹션에 게시해주세요!
원문URL:https://aws.amazon.com/ko/blogs/architecture/migrate-your-applications-to-containers-at-scale/
메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글이나 관련 기사 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.