버너 보겔스 아마존 최고기술책임자(CTO)가 5일(현지시간) 미국 네바다주 라스베이거스에서 개최된 ‘AWS 리인벤트 2024’ 기조연설에서 개발자들을 위한 조언을 내놨다. 그는 “비즈니스가 성장함에 따라 시스템이 복잡해지는 것은 불가피하다는 점을 이해해야 한다”면서 복잡성을 관리하기 위한 5가지 원칙을 제시했다.
|
그가 제시한 첫 번째 원칙은 시스템 아키텍처를 설계할 때 ‘진화 가능성(evolvability)’을 염두에 두라는 것이다. 그는 “시간이 지날수록 시스템은 성장할 것이고, 아키텍처에 대한 재검토가 반드시 필요해질 것”이라면서 “미래의 변화를 쉽게 수용할 수 있는 능력을 갖추기 위해서는 통제 가능한 방식으로 진화할 수 있는 아키텍처를 구축하는 것이 중요하다”고 말했다.
보겔스 CTO는 진화 가능한 아키텍처 대표 사례로 AWS의 스토리지 서비스인 S3를 꼽았다. 그는 “우리가 정말 잘한 것이 있다면 S3를 출시한 처음부터 1~2년 후에는 처음과 같은 아키텍처를 운영하지 않을 것이라는 점을 이미 알고 있었다는 점”이라면서 “2006년 첫 출시 당시 S3는 단순한 API를 가진 클라우드 스토리지로 단 8개의 서비스를 제공했는데, 내구성·가용성·비용 효율성에 중점을 두었던 초기 원칙 덕분에 지속적으로 진화해 현재는 300개 이상의 서비스를 제공하고 있다”고 소개했다.
복잡성을 다루는 두 번째 원칙은 ‘작은 조각으로 나누기’다. 그는 “복잡성을 관리하기 위해서는 관리 가능한 단위로 분해하는 것이 중요하다”며, 마이크로서비스 아키텍처를 강조했다. 마이크로서비스 아키텍처는 큰 시스템을 작은 독립적인 서비스로 분할해 구축하는 방식으로 개발, 배포, 확장이 용이해 클라우드 네이티브 아키텍처의 표준으로 자리잡았다.
세 번째 원칙은 ‘조직을 아키텍처에 맞추기’다. 보겔스 CTO는 “복잡한 시스템을 구축할수록 보통 조직 역시 구축 중인 소프트웨어만큼 복잡해진다는 점을 인정해야 한다”면서 “성공적인 팀을 구축하는 핵심은 자만하지 않는 것이다. 상황이 잘 돌아가고 있을 때도 여전히 무엇이 잘못될 수 있는지 살펴보고 계속해서 질문해야 한다”고 제언했다.
네 번째 원칙은 ‘셀 단위로 분리하기’다. 보겔스 CTO는 “서비스가 성공하기 시작하면, 운영상 발생한 작은 문제가 고객에게 큰 영향을 미칠 수 있다는 알아야 한다”며 “서비스를 셀 기반 아키텍처로 분리해, 문제가 발생하더라도 다른 단위에 영향을 주지 않도록 해야 한다”고 조언했다. 그는 셀 크기를 결정하는 기준에 대해 “이상적인 셀은 상상할 수 있는 가장 큰 워크로드를 처리할 수 있을 만큼 커야 하지만, 전체 규모로 테스트할 수 있을 만큼 작아야 한다”고 제시했다.
다섯 번째 원칙은 ‘복잡성 자동화하기’다. 사람이 관여하는 지점에서 사람이 만든 오류가 발생하기 쉬운 만큼, 수작업을 없애는 것이 좋다는 조언이다. 보겔스 CTO는 자동화해야 하는 대상에 대해선 “무엇을 자동화하지 않아도 되는지 생각해 보고, 높은 판단력이 필요하지 않은 모든 것을 자동화하라”고 강조했다.
Copyright ⓒ 이데일리 무단 전재 및 재배포 금지
본 콘텐츠는 뉴스픽 파트너스에서 공유된 콘텐츠입니다.