다음의 내용은 Amazon Web Services (이하, AWS)에서 제공하는 강의 중
'클라우드 기반 앱 현대화를 위한 다섯가지 경로'에 대한 강의 노트이다.
Legacy Application?
-> 과거의 기술이나 플랫폼을 이용해 작성된 애플리케이션.
- Refactor : 새롭게 새로 개발하여 클라우드에서 서비스
- Re-Platform : 클라우드 기반의 새로운 플랫폼으로 이전,
- Repurchase : 클라우드 기반의 SaaS 플랫폼을 구매하여 사용, 클라우드화 시키는 과정,
- Rehost, Relocate : Lift & Shift 즉, 그대로 가져다가 옮기는 것.
- Retain, Retire : 더 이상 운영하기 힘든 레거시를 폐기 또는 중단하는
클라우드화 대표적 방법은 Relocate/Rehost, Re-platform, Refactor로 나뉜다.
Relocate/Rehost : 기존 레거시 애플리케이션의 코드 변경 없이 App/DB를 바로 옮기는 것.
-> EC2와 같은 가상 서버로 모든 코드를 옮긴다. (Lift & Shift)
Re-platform : 더 빠른 개발과 배포를 위해 컨테이너를 이용하는 것.
-> 앱 컨테이너 오케스트레이션 도구 : Amazon ECS, Amazon EKS 등.
-> 관리형 데이터 베이스 : Amazon RDS 등 사용.
* 컨테이너 오케스트레이션 도구?
-> 컨테이너의 배포, 관리, 확장, 네트워킹 자동화 도구. 많은 수의 호스트 배포 및 관리를 위해 활용하며, 컨테이너에 마이크로 서비스 구현 시 스토리지, 네트워킹, 보안 등의 서비스를 간편히 오케스트레이션 할 수 있다. (출처 : redhat)
* 오케스트레이션?
-> 오케스트레이션은 컴퓨터 시스템과 애플리케이션, 서비스의 자동화된 설정, 관리, 조정을 의미합니다. 오케스트레이션은 IT 팀이 복잡한 태스크와 워크플로우를 보다 쉽게 관리할 수 있도록 돕습니다. (출처: redhat)
* Automation vs. Orchestration?
-> 일반적으로 자동화(Automation)란 단일 태스크의 자동화를 의미합니다. 반면 오케스트레이션은 여러 이기종 시스템(multiple disparate systems) 전반에서 다양한 단계를 수반하는 프로세스 또는 워크플로우를 자동화하는 방식을 뜻합니다. 우선 프로세스를 자동화하고 나면 이를 자동으로 실행되도록 오케스트레이션 할 수 있습니다. (출처: redhat)
Refactor: 클라우드 서비스를 활용해 서버리스 기반으로 개발 방식 활용.
-> AWS Lambda : 서버리스 기반 개발 툴.
-> DB : Amazon DynamoDB 같은 서버리스 데이터 베이스 활용.
* 기존 서버 운영 방식 그대로 클라우드 전환 시 비용 많이 발생.
-> 클라우드 이전 후 최적화 과정을 거쳐 절감 가능하다.
최적화 방법.
1. 가상 서버 사양에 맞추어 HW/SW 리사이징.
2. 상용 SW를 오픈 소스로 전환.
3. 관리형 서비스, 컨테이너, 서버리스 기반으로 앱 리팩터링.
4. 자동화 도구, DEV-OPS기반 배포 모델 사용.
Amazon에서 제공하는 마이그레이션 도구.
AWS MGN ( AWS Application Migration Service )
: 물리적 서버, 데이터 센터, 기타 클라우드 플랫폼에서 AWS로 마이그레이션을 지원한다.
AWS MGN 마이그레이션 단계
1. Replication Agent 설치.
-> 각 서버에 대한 정보 수집.
2. 레거시 서버 설정을 사용해 AWS로 복제
3. 테스트 및 컷오버를 통해 프로덕션으로 제공.
* 컷오버(Cut-Over) : 프로젝트 수행 중 개발환경에서 실 운영환경으로 전환하는 단계
마이크로 서비스 아키텍처와 궁합이 잘 맞고, CI/CD가 쉽게 가능하다는 장점이 있다.
배포 파이프라인을 위해 패키징 하기 쉬움, 예측 가능한 런타임 환경 만들기 가능.
컨테이너를 사용해 쉽게 애플리케이션 확장 및 관리가 가능.
위와 같은 장점들로 인해 AWS 사용 시 컨테이너 배포를 사용하는 회사들이 많음.
AWS에서 제공하는 컨테이너 관리 서비스들은 다음과 같다.
AWS App2Container : Java, .NET 웹 애플리케이션을 컨테이너 형식으로 AWS에 마이그레이션 할 수 있다.
App2Container 세부 진행과정.
1. 컨테이너로 만들 앱이 있는 서버에 소프트웨어 설치
2. 인벤토리 분석 후 결과를 json파일 형식으로 반환 받음. Analysis.json 파일.
3. 컨테이너로 만들 특정 인벤토리 선택 시, 도커 이미지와 배포 파일 생성
4. Amazon ECS로 배포할 수 있는 아티팩트, 환경 설정 파일 생성.
5. AWS에 배포
6. CI/CD 파이프라인 생성.
* app2container cli 사용 시
> app2container inventory
: 전체 리스트 확인
> app2container analyze --application-id "아이디"
: analyze후 analysis.json파일로 리턴해줌.
> app2container containerize --application-id "아이디"
: 도커 이미지와, 컨테이너 설정 만들어짐.
cloudFormation배포 완료 시 Amazon ECS에서 배포된 닷넷 애플리케이션 접속 가능.
Amazon EKS : AWS 관리형 쿠버네티스 서비스.
Amazon EKS Blueprints : 쿠버네티스를 잘 모르는 사람들도 빠르게 구성하고 운영할 수 있게 만든 서비스.
서버리스?
: 관리할 서버가 없음, 사용한 컴퓨팅 및 용량만큼만 과금,
트래픽에 따라 자동으로 확장, 다양한 서비스와 연동 및 이벤트 통합.
기존 아키텍처는 3-tier로 구성된 반면,
서버리스 아키텍처는 모두 이벤트 기반으로 연동되는 서비스 기반으로 구성.
AWS AppRunner
: 서버리스 및 컨테이너 앱 배포를 위한 완전 관리형 서비스.
웹 기반 백엔드, 모바일 백엔드, 마이크로 서비스 및 API 호스팅을 도와주는 서비스.
AWS Fargate vs AWS AppRunner
: AWS Fargate는 컨테이너 이미지 생성, 빌드를 운영자가 직접 해야 하는 반면에, AWS AppRunner는 이 부분까지 AWS가 맡아서 진행.
AWS AppRunner 사용 시, 빌드, 런타임 구성, CPU 및 메모리 크기, 배포 및 확장 등을 AWS에서 관리해준다.
AMAZON 서버리스 데이터베이스 서비스
관계형 : Amazon Aurora
키-밸류 : Amazon DynamoDB
시계열 : Amazon Timestream
원장 : Amazon QLDB
칼럼형 : Amazon Keyspaces
데이터 분석을 위한 Amazon 제공 서비스
데브옵스 기반의 자동화된 배포 방식, AI 운영 기능을 통한 운영 부담 줄이기.
AWS가 제공하는 코드 배포 서비스.
AWS Proton
: 셀프서비스 인프라 템플릿 및 프로비저닝 자동화 도구. 애플리케이션 배포 빠르게 가능.
개발, 인프라 팀으로 나뉜 경우 활용하기 좋은 서비스.
Amazon에서 제공하는 AI 기반 운영
Amazon CodeWhisperer
-> 머신 러닝 기반의 소프트 웨어 코딩 자동 추천 서비스
Amazon CodeGuru
-> 개선방안 및 리포트 제공.