천만 사용자를 위한 클라우드 아키텍처, 5년간의 여정
본격적으로 AWS 클라우드 에반젤리스트로 일한 지 만 5년이 되었습니다. 2014년 11월 AWS에 입사한 후, 이듬해 4월 부터 당시 불모지 같았던 클라우드 분야에서 개발자와 스타트업을 대상으로 본격적으로 기술 전도를 시작했습니다. 가끔 제가 하고 있는 일에 대한 후일담을 한번 씩 블로그에 올리고 있는데, 오늘은 ‘기본기를 다지는 콘텐츠의 중요성’에 대해 이야기해보려고 합니다.
AWS 입사 후, 일주일 만에 운 좋게도 AWS re:Invent 2015에 참석을 하게 됐습니다. 거기서 두 가지 큰 감명을 받았습니다. 당시 12명 밖에 없었던 에반젤리스트팀을 만나서 어떻게 일하는지 몸소 경험할 수 있었던 것입니다. IoT 해커톤에 스탭으로도 참여하고, 동료들에게 조언도 많이 들었습니다. 또 하나는 입사 초년생에게는 원하는 세션을 몇 개 들을 수 있는 바우처를 주었는데, 그 중에 Scaling Up to Your First 10 Million Users 이라는 강연을 들은 것입니다.
이 강연은 AWS의 기본 개념으로 부터, 스타트업에서 1명의 사용자로 부터, 수백 명, 수천 명, 수만 명, 수십 만명 그리고 수백 만명까지 사용자가 늘어 갈 때 어떤 클라우드 아키텍처를 구성해야 하는지 50분만에 명쾌하게 알려주었습니다. (발표자였던 Chris Munns은 당시 솔루션즈 아키텍트였는데, 지금은 수석 서버리스 에반젤리스트로 함께 일하고 있습니다.)
저도 이전에 스타트업에서부터 인터넷 포털에 일하면서 한 명으로 부터 수천만의 사용자를 위한 웹 서비스를 직접 구축하거나 목도해오면서 알아 왔던 것들을 한번에 정리해 주는 느낌이었습니다. 게다가 이를 해결하기 위한 AWS 서비스를 함께 소개해 주니 너무 좋았습니다.
제가 새 일을 시작한다면, 이 발표 내용을 가장 먼저 국내 AWS 고객과 개발자에게 전달하겠다고 다짐했습니다. 그 후, 수 개월 동안 AWS 내부 교육과 에반젤리스트 훈련 등을 거쳐서 딱 5년전인 2015년 4월에 첫 번째 외부 강연을 맡게 되었습니다. 공교롭게도 AWS Activate라는 스타트업 지원 프로그램을 받는 ‘스타트업 개발자’를 위한 강연이었습니다.
Chris에게 연락해서 최신 슬라이드를 받아 이 강연을 잘 준비해서 전달을 했는데, 당시 청중 반응이 너무 좋은 거에요. 바로 슬라이드쉐어에 올리고 공유를 했는데, 며칠 만에 10,000회 조회가 되었습니다. 지금은 총 3만3천회 정도 되네요. 그 이후로 한 2년간 이 주제로 발표만 백여 회 했던 것 같습니다.
최초로 동영상으로 녹화되어 남아 있는 것은 2016년 AWS Summit 발표로서 디스패치의 백승현 CTO랑 함께 한 발표였습니다. 개발자라면 누구나 꼭 알아두어야 할 중요한 아키텍처 팁들이 망라되어 있습니다. 그 중에 몇 가지만 살펴보면…
- 서비스 가용성을 확보하라 – 내가 아무리 애플리케이션을 잘 만들어도 서버나 네트워크 등의 가용성이 확보되지 않으면 말짱 도루묵입니다. 데이터센터 내 항온, 항습, 전원, 네트워크 장비, 서버 용량, 하드디스크 장애 등 내가 제어하기 못하는 많은 것들이 있음을 알아야 합니다. 큰 규모 회사에서는 시스템/네트워크 엔지니어들이 몸빵하거나 비싼 장비빨로 대신해 줄 수 있지만, 1인 개발자나 스타트업은 쉽지 않습니다. 그래서 높은 가용성을 제공하는 가장 좋은 클라우드 서비스를 의지해야 합니다!
- 바퀴를 새로 발명하지 마라 – AWS 서비스는 수 백만의 글로벌 고객의 피드백을 기반으로 만들어지는 수백개의 서비스가 있습니다. 여러분이 필요하다고 생각했던 것은 이미 다른 사람도 생각했습니다. 그래서, AWS는 이를 클라우드 서비스로 만들어 두었습니다. 굳이 바퀴를 새로 만들 필요는 없습니다. 있는 것을 굳이 새로 만들려는 개발자들이 있는데, 민첩성과 효율성 측면에서 가져다 쓰는 것이 장기적으로 기술 부채를 줄이는 일입니다.
- 계란을 한 바구니에 담지 마라 – 나 혼자 쓰다가 다른 사람들이 서비스를 쓰기 시작해서 수십, 수백 명이 되면 서버 한대에 웹 서버, DB, 파일을 다 두고 있는게 아니라 기능 별로 아키텍처를 나누어야 합니다. 웹 서버, API 서버, DB 서버, 파일 서버 등을 나누어 단일 장애 지점을 없애야 합니다. 최근에는 애플리케이션 자체를 기능 단위로 쪼개서 마이크로서비스 및 서버리스 아키텍처로 구성하는 것이 주류가 되었습니다.
- 캐시로 컴퓨팅 부하와 병목을 분산하라 – CPU/메모리는 가장 비싼 자원입니다. 이를 효율적으로 활용하기 위해 불필요한 부하를 줄 필요가 없습니다. 콘텐츠를 많이 제공하는 서비스라면, 콘텐츠배포네트워크(CDN)을 통해 정적 콘텐츠를 별도로 분리하여, 웹 서버의 부하를 줄여야 합니다. 사용자가 많이 접속하는 서비스라면, Redis나 Memcached 같은 인-메모리 캐시를 활용해서 DB 병목도 줄여 주어야 합니다. 수만에서 수십만 사용자를 서비스를 한다면 이들 원칙은 아주 기본 중에 기본입니다.
- 오토스케일링과 서버리스를 활용하라 – 클라우드의 가장 큰 장점이 수평적 확장(Scale-out)이 편하다는 것입니다. 애플리케이션 확장을 언제든 늘이거나 줄일 수 있습니다. 서버 자동 확장/축소 기능이나 아예 서버 관리가 불필요한 서버리스 환경 자체가 가용성 뿐만 아니라 확장에 대한 고민을 없애 주게됩니다. 그러나, 여러분의 애플리케이션이 확장이 용이한 앞선 4가지 원칙을 기반으로 클라우드 네이티브로 구축되어 있어야만 합니다.
- 빠른 배포와 자동화가 중요하다 – 클라우드 네이티브의 애플리케이션과 자동 확장/축소 등이 어느 정도 구성되어 있다면, 사용자가 수백만으로 늘더라도 손쉽게 대응이 가능합니다. 이쯤 되면 개발자 숫자도 많아지고 앱 복잡성도 매우 커진 단계이구요. 이때, 문제는 항상 생각지 않았던 애플리케이션의 버그나 배포 과정 중에 일어납니다. 따라서, 인프라/앱 배포 자동화를 위한 데브옵스(DevOps) 모범 사례를 실천해야 합니다. 지속적 통합 및 배포(CI/CD), 모니터링 및 텔레메트릭과 같은 관제 도구, 빠른 장애 대응 및 훈련(ChatOps 및 카오스엔지니어링) 등 운영 탁월성을 확보하는 것이 무엇보다 중요합니다.
- 새로운 기술 변화에 발 빠르게 움직여라 – AWS 클라우드를 통해 이 정도의 아키텍처를 구성하여 서비스를 하고 있는 모범 기업이라면, 클라우드를 지렛대 삼은 비용 절감을 통해 마이크로서비스 아키텍처로의 리팩토링, 빅데이터 분석을 위한 데이터레이크 구축, 기계 학습을 통한 비지니스 인사이트 도출 같은 굴직한 기술 변화에 민감하게 움직일 수 있는 여유 자원을 확보할 수 있을 것입니다. 여러분이 지금도 서비스 운영에 바쁘다면, 어디에 병목이 있는지 알아내고 클라우드를 통해 어떻게 해결할지 살펴보세요. 그래야만, 시장 변화에 민감한 새로운 것을 시도할 수 있는 자원을 확보할 수 있습니다.
지금까지 살펴본 주요 원칙들은 작은 스타트업이 성장하면서 늘 겪고 있는 문제에 대한 해법과 기본기에 해당되는 것입니다. 뿐만 아니라, 최근 디지털 전환을 꿈꾸고 클라우드로 진입하는 모든 대기업에도 똑같이 적용됩니다. 우리가 무엇을 배울 때 가장 중요한 기본기를 다져야 하듯 클라우드 아키텍처의 변하지 않는 원칙입니다.
또한, 애플리케이션 및 사용자 보안은 가장 우선에 두어야 할 항목입니다. 2017년에 제가 만든 ‘천만 사용자를 위한 AWS 아키텍처 보안 확장 모범 사례‘는 사용자 규모에 따른 클라우드 아키텍처의 성장 시 살펴보아야 하는 보안 모범 사례도 다루었습니다.
이제 천만 사용자를 위한 클라우드 아키텍처’는 이제 가장 기본 콘텐츠가 되었습니다. 많은 AWS 솔루션즈 아키텍트들이 고객사에 가장 먼저 소개하는 내용이며, 매년 AWS Summit 행사 때 마다 가장 큰 발표장에서 진행하는 전통이 되었습니다. 매년 해당 발표를 맡은 발표자는 내용을 조금씩 업그레이드하면서 이들 원칙들을 잘 지킬 수 있는 다양한 AWS 서비스들을 함께 소개하고 있습니다. (여러분도 그 변화를 한번 살펴보세요.)
오는 5월 13일에 열리는 AWS Summit Online 행사에서도 여전히 모범 사례 트랙에 본 세션을 문종민 솔루션즈 아키텍트가 발표합니다. 이외에도 버너 보겔스 박사님의 기조 연설과, 총 50여개의 온라인 세션이 준비되어 있으니 지금 등록하시기 바랍니다.
요즘 코로나19의 여파로 사회적 거리두기와 함께 온라인 활동이 더욱 늘어났는데, 앞으로도 원격 근무, 원격 수업, 원격 진료 등 다양한 온라인 기반 웹 서비스와 모바일 앱은 더욱 더 확대될 것입니다. 여러분의 서비스가 지금 확장 가능한 상태인지 이 발표를 통해 다시 한번 확인해 보시고, 만약 그렇지 않다면 AWS에 직접 문의하셔서 꼭 지원을 받아보시기 바랍니다.
– Channy(윤석찬);
Source: 천만 사용자를 위한 클라우드 아키텍처, 5년간의 여정
Leave a Reply