AWS Fargate와 Amazon ECR을 통한 삼성 개발자 포탈 구축 사례
이 게시물은 삼성에서 제공되었습니다.
삼성 개발자 포털(Samsung Developers)은 삼성 제품들과 관련된 애플리케이션을 작성하려는 개발자, IT 관리자 및 학생을 대상으로 기술 문서, 개발자 블로그 및 API 가이드를 제공하기 위해 만들어진 삼성의 온라인 포털이며, Samsung Developers는 3개의 포털로 구성되어 있습니다.
- IoT 개발자들에게 서비스를 제공하는 SmartThings 포털은 가장 오래된 포털입니다. Amazon Elastic Container Service(ECS)기반으로 개발하여 최근 AWS Fargate로 마이그레이션되어 운영중입니다.
- Bixby 캡슐 개발자들에게 서비스를 제공하는 Bixby 포털은 AWS Fargate를 사용하여 개발되었습니다.
- 새로운 모바일 메시징 표준을 지원하는 RCS(Rich Communication Services) 또한 AWS Fargate를 사용하여 개발되었습니다.
SECOG(Samsung Electronics Cloud Operation Group, 삼성 전자 클라우드 운영 그룹)에서는 2017년과 2018년 삼성 개발자 컨퍼런스를 통해 위의 포털들을 공개하였습니다.
삼성은 ECS를 기반으로 SmartThings 포털을 개발하며 전반적인 ECS사용경험에 대해 만족해 왔습니다. ECS가 적절한 수준의 추상화를 제공하면서 기본 인스턴스를 제어가능하다는 것을 경험한 이후, re:Invent 2017에서 소개된 AWS Fargate에 대한 도입까지 검토하게 되었습니다. Amazon ECS를 사용해 오던 삼성에게 Fargate는 매력적인 요소가 많았습니다. 특히 Fargate는 서버 및 클러스터를 관리할 필요가 없어 높은 수준의 운영 효율성을 제공하기 때문에 새로운 기능을 릴리스할때 컨테이너 실행에만 집중할 수 있게 해주었습니다.
이러한 장점을 인해 지난 2018년 엔지니어링 팀은 모든 시스템을 Fargate로의 마이그레이션을 결정했습니다. Fargate는 ECS와 동일한 API 및 엔드포인트를 제공하기 때문에 너무나도 매끄럽게 마이그레이션이 진행되었을 뿐만 아니라 도입과 함께 바로 운영 효율성이 향상되는 것을 경험하였습니다. Fargate 이전에는 포털의 웹 서비스 관리만 전담하는 관리자와 운영자를 배정했었는데, Fargate로 마이그레이션한 이후에는 관리자에 대한 요구사항을 없애고 운영 비용을 절감하면서도 개발 효율성을 향상시킬 수 있었습니다. 이로 인해 삼성의 운영 및 관리 팀들은 정교한 로깅 및 모니터링 활동에 더 중점을 두고 전반적인 서비스 안정성, 보안 및 성능을 더욱 향상시키고 있습니다.
삼성 개발자 포털은 마이크로 서비스 기반 아키텍처를 사용하여 구축되었으며, 기술 문서, API 문서 및 지원 채널을 고객에게 제공하기 위해 포털 내의 다양한 Fargate기반 서비스들을 지속적으로 업데이트해야 합니다. 이와 관련하여 매일 새로운 콘텐츠를 게시하는 열정적인 테크니컬 라이터들을 통해 이러한 업데이트들이 시작됩니다. 삼성 클라우드 운영 그룹(SECOG)과 기술 파트너(TecAce)는 이러한 비즈니스 요구 사항을 지원하기 위한 민첩하고 효율적이며 최소한의 운영 오버헤드로 실행할 수 있는 서비스를 연구해왔고, Fargate에 관해 알게 되었을 때 개념 증명절차를 통해 Fargate가 요구 사항을 충족할 수 있다고 확신하게 되었습니다.
서비스 핵심 요구 사항
Fargate로의 마이그레이션을 시작하면서 포털이 SECOG 및 InfoSec으로 표준화된 다음과 같은 다양한 핵심 요구 사항을 준수해야 하는 요구사항이 있었습니다.
- 보안 : Service Ops는 모든 보안 요소를 제어할 수 있어야 합니다.
- 확장성: 이 서비스는 삼성 제품을 공개적으로 사용하는 삼성 개발자에게 초점을 맞추고 있습니다. 그러므로 서비스는 트래픽 급증을 처리 할 수 있어야 합니다.
- 손쉬운 배포: 기술 문서를 실제 환경에 손쉽게 푸시하여 기술 문서 작성자가 간편하게 편집할 수 있어야 합니다.
- 제어 기능: 포트 매핑, 메모리 크기 등과 같은 컨테이너 옵션을 제어할 수 있도록 서비스를 구현해야 합니다.
AWS Fargate에 대한 심층검토 과정을 통해 SECOG 및 InfoSec 팀 모두 Fargate가 이러한 모든 요구 사항을 충족시킬 수 있다는 점을 알게 되었습니다.
프로세스 구축 및 배포
SECOG와 TecAce는 AWS Fargate 및 Amazon Elastic Container Registry(ECR) 서비스를 이용하여 개발자 포털의 주요 요구 사항을 지원하로 결정했습니다.
시스템 아키텍처는 매우 간단합니다. 새로운 기능을 릴리스하거나 문서를 업데이트할 때 새로운 컨테이너 이미지를 ECR에 업로드 한 다음 프로덕션 환경에 코드를 게시합니다. 각 비즈니스 애플리케이션은 Application Load Balancer(ALB), Fargate 및 Route 53의 조합으로 설계되었습니다.
AWS Fargate의 장점
Samsung Developer는 전 세계에 나누어져 있는 개발, 운영 QA역할과 책임을 갖는 다수의 팀들로 구성되어 운영 중입니다. 각 팀은 테스트를 위해 개별 환경을 배포해야 하는데 이전에는 웹 서비스 인프라 운영을 위한 상당한 엔지니어와 개발자들이 필요했습니다. Fargate는 각 팀이 새로운 컨테이너 이미지를 만들고 ECR에 배포하기만 하면 이미지가 AWS Fargate의 테스트 환경에 배포될 수 있게 이 프로세스를 단순화 해주었고, 이 프로세스를 통해 개발자와 운영자가 인프라를 관리하고 구성하는 데 소요되는 시간을 크게 줄일 수 있었습니다.
Fargate를 통해 프로덕션 환경에 더 자주 배포할 수 있게 되고, Samsung Developers 내에서 추가적인 삼성 제품을 다루는 데 주력할 수 있었습니다. 부가적으로, 새로운 이미지를 배포 및 생성에 대해 걱정할 필요가 없게 되었습니다. 단순히 컨테이너의 메모리와 포트를 설정하여 새 개정(revision)을 작성하기만 하면 됩니다. 그런 다음 컴퓨팅 용량을 결정한 후 Fargate 클러스터를 선택합니다.
Fargate 서비스의 컴퓨팅 용량은 Auto Scaling 기능을 사용하여 쉽게 확장 할 수 있어 모든 배포 작업을 수행하는 데 수 분 내로 처리됩니다. 뿐만 아니라, 시스템 관리자 또는 운영자가 관리해야 하는 클러스터가 없으며, 서비스를 관리하기 위한 EC2인스턴스 또는 Docker Swarm 또한 필요 없습니다. 이를 통해 Samsung Developer의 기능에 집중하고 최종 고객 경험을 향상시킬 수 있었습니다.
현재 Samsung Developers 환경 내에 배포되고 운영되는 서비스들은 Amazon CloudWatch지표를 통해 상태를 모니터링하고 있습니다. 추가적으로, 월간 비용을 약 44.5%(컴퓨팅 비용만 산정) 절감하면서도 포털에서 필요한 가용성과 안정성을 손쉽게 실현할 수 있었습니다.
삼성의 Fargate에 대한 훌륭한 사용경험을 바탕으로 추가 서비스를 ECS에서 Fargate로 마이그레이션하는 것을 검토하고 있습니다. Fargate가 제공하는 자동화 수준은 삼성의 개발 및 운영 리소스를 보다 경제적으로 만들어 주면서도 빠르게 대응할 수 있게 도와 줍니다. 최초 Fargate를 시작함에 다소 시간이 걸릴 수 있지만, 일단 환경이 설정되고 나서부터는 Fargate를 통해 높은 수준의 민첩성과 확장성을 실현할 수 있었습니다.
삼성(Samsung) 소개
삼성전자는 서울에 본사를 두고 있는 다국적 대기업입니다. 이 회사는 수많은 계열사로 이루어져 있으며 대부분이 삼성 브랜드로 통일된 한국 최대의 기업입니다.
이 글은 AWS Architecture Blog의 Samsung Builds a Secure Developer Portal with Fargate and ECR 한국어 번역입니다.