클라우드 기반의 현대적 애플리케이션을 위한 운영 최적화 전략
<1> 모놀리식 애플리케이션
<2> 마이크로 서비스
<3> 민첩성을 위한 조직 개편
<4> 서비스가 많은 조각으로 나누면 운영이 아주 힘들지 않나요?
<5> 서버리스는 운영의 부담을 감소시킨다.
<6> 마이크로 서비스 모니터링
<7> 마이크로 서비스 개발과 배포
<1> 모놀리식 애플리케이션
모놀리식 애플리케이션이란 , 다수의 기능을 가진 단일 애플리케이션이다.
1
문제점?
개발 속도가 느리다.
수평 확장이 어렵다.
전체 서비스를 내려야 하는 경우가 많다.
여러 개의 팀에서 관리
2
장점?
배포 쉽다.
<2> 마이크로 서비스
애플리케이션 하나에 기능 하나이다.
변경 진행 시 기능 단위로 개별 변경
단일팀에서 관리하여 집중과 소유
<3> 민첩성을 위한 조직 개편
1
모놀리닉 애플리케이션 + 개발팀들
2
마이크로 서비스 + 2 피자팀
완전한 소유권
완전한 책임
DEVOPS
혁신에 집중
3
대규모 배포 - 지속적인 배포가 이루어지고 있다.
<4> 서비스가 많은 조각으로 나누면 운영이 아주 힘들지 않나요?
각 팀은 일부 기능만 관리한다.
운영은 간단해짐.
<5> 서버리스는 운영의 부담을 감소시킨다.
인프라 준비 관리 필요 없음
이용한 만큼 지불
자동 스케일링
고가용성
<6> 마이크로 서비스 모니터링
1
필요한 것?
애플리케이션 코드
모니터링 SDK
라우팅
디스커버리 기능
배포 로직
2
애플리케이션 코드와 다른 기능을 분리하자.
모니터링 SDK , 라우팅 , 디스커버리 기능 , 배포 로직과 분리하자.
3
관측성(Observability)을 확보하는 것이 목표이다.
로그
지표
추적
4
관측성(Observability) 도구?
Cloudwatch logs
Cloudwatch metrics
AWS X-Ray
<7> 마이크로 서비스 개발과 배포
1
Amazon의 DEVOPS 운영은 어떻게?
민첩성을 위한 조직 개편 (마이크로 서비스, 2 피자팀)
최대한 자동화 추구
툴들의 표준화 추진
거버넌스와 템플릿
Infra as code
2
CI/CD를 위한 개발 툴?
소스 - CodeCommit
빌드 - CodeBuild
테스트 - CodeBuild+ 서드파트
배포 - CodeDeploy
3
Cloudformation을 S3 버킷에 올려 자동화함.
4
AWS CDK?
클라우드 인프라를 재사용 가능한 컴포넌트로 모델링 가능
5
서버리스와 컨테이너 애플리케이션을 위한 개발 도구?
AWS Serverless Application Mode (AWS SAM)
Containers Constructs for CDK
CDK for Kubernetes (CDK8 s)
6
참고자료
https://github.com/aws/aws-cdk
https://github.com/aws/serverless-application-model
https://aws.amazon.com/ko/devops/
다음은
https://brunch.co.kr/@topasvga/2709
https://brunch.co.kr/@topasvga/2699
감사합니다.