[Report] 클라우드 네이티브로 가는길 – AWS 컨테이너 서비스 파헤치기 #AWSSummit
올해 5월 12일~13일 AWS Summit Online Korea 가 개최되었었습니다.
작년과 동일하게 온라인으로 개최되었으며 다양한 세션에서 깊이 있는 강연을 볼 수 있었습니다.
그 중 제가 보았던 <클라우드 네이티브로 가는 길> 세션에 대해 리뷰를 해보고자 합니다.
(본 레포트에 사용된 이미지는 별도의 설명이 없다면 해당 세션의 이미지임을 알립니다.)
개요
애플리케이션 현대화를 위한 첫걸음이 된 컨테이너 서비스는 매우 다양한 종류와 옵션들을 가지고 있으며, AWS re:Invent 2020에서도 컨테이너 관련 서비스들에 대한 다양한 업데이트가 추가되었습니다. AWS의 다양한 컨테이너 서비스를 활용하면 어떻게 기존의 애플리케이션을 마이그레이션 하는지, 컨테이너를 활용하게 되면 어떠한 장점이 있는지를 알아봅니다.
- 발표자
- 최진영, 테크니컬 트레이너, AWS
- 배주혁, 소프트웨어 엔지니어, 삼성전자
- 난이도
- 입문 난이도
AWS에서 제공하는 어떠한 컨테이너 서비스를 제공하는지 그리고 온 프레미서에서의 마이그레이션은 어떻게하며 장점은 무엇인지 등을 배울 수 있는 강연이었습니다.
난이도도 발표자분들의 친절한 설명과 잘 정리된 자료 덕에 어렵게 느껴지지 않았습니다.
강연 리뷰
시작하며
강연은 본 내용을 시작하기 앞서 다음과 같은 의문을 던집니다.
이러한 불편함을 감수하고 "왜 컨테이너를 도입해야 하는가?"라는 질문의 답을 찾는 것이 강연의 목적입니다.
CNCF는 Cloud Native Computing Foundation 의 약자로 클라우드 네이티브 소프트웨어를 위한 지속 가능한 생태계 구축을 목표로 하는 재단입니다.
AWS의 컨테이너 서비스
마이그레이션을 위해 AWS에서는 어떠한 컨테이너 서비스를 제공하고 있는지 알아야합니다.
- 관리(오케스트레이션)
- 호스팅(서버)
- 이미지 저장소
- ECR : 컨테이너 이미지 저장 서비스
컨테이너가 늘어날수록 높아지는 복잡도를 해결하기 위해서 컨테이너를 관리하는 도구(오케스트레이션 툴)이 필요합니다.
온 프레미스 환경에선 Kubernetes, Docker Swarm, Apache Mesos 등의 도구를 사용합니다.
이러한 오케스트레이션을 위해 AWS에서는 ECS와 EKS를 제공하고 있습니다.
ECS를 사용하면 AWS에서 컨테이너를 완전 관리하기 때문에 컨테이너의 오토 스케일링 및 상태 체크 등 관리에 필요한 시간을 줄일 수 있고, AWS의 다른 다양한 기능과 연계할 수 있습니다.
만약 온 프레미스 환경에서 Kubernetes를 사용하여 컨테이너를 관리하여 왔다면 AWS에서도 EKS를 활용하여 그대로 컨테이너를 관리할 수 있습니다.
또한 컨테이너의 이미지는 ECR을 이용하여 저장 및 관리 할 수 있습니다.
컨테이너들이 가동될 서버를 프로비저닝하고 관리하기 위해서 EC2를 사용할 수 있습니다.
만약 이러한 컴퓨팅 파워의 관리가 불필요하다면 Fargate를 사용하여 서버 관리에 대한 수고를 줄이고 애플리케이션 관리에 더 시간을 쓸 수 있습니다.
컨테이너를 위한 새로운 서비스(Re:Invent 2020)
이 외에 Re:Invent 2020 에서 컨테이너를 편리하게 사용하기 위해 다양한 서비스를 발표했었습니다.
이 리뷰에서는 어떠한 것이 언급되었는지만 적습니다.
- AWS Proton : 컨테이너 및 서버리스 애플리케이션을 위한 최초의 완전관리형 애플리케이션 배포 서비스
- AWS ROSA : Openshift의 완전 관리형 서비스
- AMP : Prometheus의 완전 관리형 서비스
- AGP : 완전 관리형 컨테이너 모니털이 서비스
- ECS Anywhere : 사용중인 ECS를 온 프레미스에서 그대로 사용할 수 있도록 하는 서비스
- EKS Anywhere : Amazon EKS의 새로운 배포 옵션
늘어가는 컨테이너 도입
(출처 : CNCF 2019 서베이)
프로덕션에서 컨테이너를 도입하는 기업은 갈수록 늘어나고 있습니다.
이미지의 마지막 연도인 2019년에는 84% 이지만 2020년 기준으로는 92%로 더욱 증가하였습니다. 다양한 오케스트레이션 툴 중에서 Kubernetes가 가장 많이 사용되고 있으며 그 중에서도 EKS가 Kubernetes 툴로써 가장 많이 사용되고 있습니다.
실제로 어떤식으로 컨테이너 서비스들이 사용되고 AWS를 사용하면 어떠한 이점이 생기는지 Samsung Account의 사례를 보며 알아봅니다.
Samsung Account의 컨테이너 사용 사례
사례의 개요는 다음과 같습니다.
현재는 더욱 클라우드 네이티브한 사용을 위해 컨테이너로 마이그레이션을 하고 있습니다.
컨테이너를 사용하려는 이유는 다음과 같습니다.
- 개발 속도 향상
- 운영 체제 전체의 이미지가 아닌 애플리케이션의 이미지만 생성하면 되기 때문에 개발 속도가 향상됩니다.
- 이미지 경량화
- 애플리케이션의 이미지만 관리하면 되기 때문에 관리에 필요한 고려사항이 줄어듭니다.
- 비용 절약
- VM마다 하나의 이미지를 실행하는 것이 아니기 때문에 비용을 절약할 수 있습니다. 이러한 내용은 소개하는 사례뿐만이 아닌 모든 사례에서 공통으로 적용되는 사항입니다.
해당 사례에서는 자동화를 위한 구성으로 우선 인프라 구축에 Terraform을 사용하였습니다. 코드로 관리되기 때문에 인프라에 변경 사항이 발생하여도 손 쉽게 대응할 수 있었습니다.
Kubernetes의 오브젝트를 패키징하기 위해 helm을 사용하였고 배포에는 argo를 사용하였습니다.
이러한 인프라가 깃에서 코드로 관리되었기 때문에 안전성을 갖출 수 있었습니다.
이 중 설치형 Kubernetes가 아닌 EKS를 사용한 장점은 다음과 같습니다.
EKS를 사용하여 컨트롤 플레인의 관리에 신경쓸 필요가 적어지고, 옵션을 키기만 하면 CloudWatch에 로그를 자동으로 적재해주기 때문에 로그 관리를 위해 별도의 로깅 서버가 불필요 해집니다. 또한 버전의 업데이트도 매우 간단합니다.
카오스 엔지니어링
특히 이 사례에서는 카오스 엔지니어링을 통하여 다양한 실패 케이스를 테스트하고 이를 해결하며 안정성을 더욱 높였습니다.
이슈가 발생한다면 이를 자동으로 회복할 수 있도록 구성하며 자동으로 해결이 불가능한 이슈라면 발빠른 탐지 및 통지가 가능하도록 하였습니다.
마무리
처음 나왔던 의문점인 "이러한 어려움에도 컨테이너를 도입하는 이유는 무엇인가?"의 답으로 강연이 마무리됩니다.
한마디로 정리하자면 컨테이너 도입으로 관리 운영 비용 등 다양한 방면에서 효율이 상승하기 때문입니다.
또한 단순히 컨테이너의 도입으로 끝나는 것이 아닌 관리를 위한 IaC 도입이나 안전성을 위한 카오스 엔지니어링 등 다양한 방법의 고려하면 더욱 완벽한 도입이 될 수 있습니다.
레포트 마무리
누구라도 이해할 수 있도록 쉬운 설명과 흐름 덕에 내용이 어렵게 느껴지지 않았습니다.
그리고 사용하는 서비스에 대해서도 왜 사용하는지 합리적인 설명이 있었기 때문에 사용에 대한 의문이 남지 않아서 좋았습니다.
하지만 강연의 특성상 사용하는 용어 하나하나에 대해 설명할 수 없었다는 것은 조금 아쉬웠습니다.
아예 처음 입문하시는 분이시라면 용어 하나하나를 찾아가며 본 강연을 청취하신다면 내용 이해에 큰 도움이 되리라 생각합니다.
이것으로 레포트를 마치겠습니다. 긴 글 읽어주셔서 감사합니다.
이 외에 추천하는 글
컨테이너를 사용하는 이유로 다음 블로그의 기사도 읽어보시는 것을 추천합니다.
왜 굳이 도커(컨테이너)를 써야 하나요? (44BIT)
또한 삼성의 마이그레이션 사례로서 다음의 글도 읽어보시는 것을 추천합니다.
AWS Fargate와 Amazon ECR을 통한 삼성 개발자 포탈 구축 사례
AWS Summit Online Korea 의 다른 세션은 다음 링크에서 확인할 수 있습니다.
AWS Summit Online Korea