2012년 4월 초, 갑자기 부서장이 불렀다. 컨텐츠 전송 네트워크(CDN, Content Delivery Network)관련 워크샵이 있는데 다녀와 보라는 것이었다. 뜻밖의 일이라 놀랍고 얼떨떨했다. 새로운 것을 배울 수 있는 소중한 기회를 얻었다는 기쁨도 있었지만, 연차가 있는 높은 직급의 직원들이 주로 다녀오는 기술 세미나에 입사한 지 1년도 안된 대리가 참석하게 되었으니 어안이 벙벙했다. 어쨌든 하루의 외근과 외근을 통한 지식의 확장은 행운이었기 때문에 기쁘게 다녀왔다.
세미나 장소는 대학교의 대강당 처럼 생긴 곳이었다. 강의장에는 이미 많은 사람들이 앉아있었다. 앞 뒤로도 좌우로도 중간 정도 되는 위치에 자리를 잡았다. 커피로 정신을 깨우지 못한채로 첫 순서가 시작되었다. 외국인 강사가 나와서 인사하고 발표를 시작해서 약간은 당황했다. CDN에 대한 기술 소개를 듣고 오라는 것과 시간과 장소 말고는 아무런 사전 정보가 없었는데 갑자기 외국인이 나와서 영어로 발표했기 떄문이었다. 영어로 발표하는 내용을 따라잡느라 정신이 없이 듣고 있었는데, 조금씩 의아한 생각이 들었다. 분명 오늘의 주제는 컨텐츠 전송(Content Delivery) 라고 들었는데, 강의 시작 20분 동안 애자일(Agile)에 대해서 이야기 했기 때문이었다. 소프트웨어 개발 과정에서 위험요소를 줄이기 위해 작은 단위로 개발하고 지속적으로 개선해나가는 전략이 필요하다는 설명이었다. 애자일에 대한 내용은 테스트 주도 개발 1, 실용주의 프로그래머 2 등을 통해 익히 알고 있던 내용이어서 강사가 설명하는 내용에는 동의했지만, 도대체 애자일이 정적 데이터 전송 3과 무슨 상관이 있는 지 의문을 갖고 강의를 들었다. 정적 컨텐츠 배포도 안정적으로 운영하기 위해 변경분을 작게 나누어서 롤링아웃 업데이트(Rolling-out Update)를 해야 한다는 뜻인지 나름 가설을 세우면서 강의를 들었다. 4
그러나 첫 시간이 다 지나도록, CDN에 대한 이야기는 전혀 없었다. 계속해서 소프트웨어 개발방법에 대한 전략과 사례에 대해서 설명할 뿐이었지만, 강의 내용이 좋아서 CDN에 대한 내용은 잊고 강의를 집중해서 들었다. 그러다가 두 번째 순서가 시작되었을 때, 괴리감에 대한 답을 찾을 수 있었다. 강의 주제가 지속적 전달(Continuous Delivery)이었는데, 실리콘 밸리의 소프트웨어 기업들이 어떻게 소프트웨어 엔지니어링을하고 있는 지 정리한 지속적 전달(Continuous Delivery)이라는 책의 저자가 직접 한국에 와서 강연하는 자리였던 것이다. 가끔 자기만의 시각으로 해석을 하시는 부서장님이 컨텐츠 전송(Content Delivery)이라고 오해하시고 세미나를 보냈기 때문에 이런 소중한 기회를 얻을 수 있었던 것이었다. 데브옵스 (DevOps)라는 단어가 일반적으로 널리 쓰이기 전이었기 때문에 지속적 전달(Continuous Delivery)이라는 단어가 매우 생소했을 것이고 충분히 컨텐츠 전송(Content Delivery)로 오해할만하다고 생각했다.
강의 내용은 정말 유익했다. 소프트웨어 시장의 요구사항을 빠르게 따라가면서도 대규모 사용자일지라도 안정적으로 서비스를 제공받을 수 있도록 품질을 높이는 방법의 시작과 끝을 구체적인 사례와 함께 들을 수 있는 귀한 시간이었다. 요구사항 분석, 형상 관리, 변경 관리, 배포 빈도, 배포 범위, 배포 전략, 모니터링 등 5 6 7 8 고객 영향도를 최소화 할 수 있는 방법과 사례를 담았고, 이 날 강의 내용은 하나도 빠짐없이 대규모 서비스를 구축하고 운영하는 데 엄청난 도움이 되었다. 정작 세미나를 출장 보내주신 부서장님은 많이 피곤하셨는지 외근 보고 자리에서 주무셨지만, 그 분 덕분에 얻은 우연한 행운(Serendipity)은 이 후 안정적이고 효율적인 서비스 운영에 많은 도움을 주었다.
- 동영상이나 이미지같이 동적으로 내용이 바뀌지 않는 데이터를 최종 사용자(End User)가 접속한 위치와 가까운 서버에 미리 복사하여 전송 속도를 줄이는 기술을 말한다. [본문으로]
- Test Driven Development: By Example, Kent Beck [본문으로]
- The Pragmatic Programmer, David Thomas , Andrew Hunt [본문으로]
- 당시에는 정적 데이터를 캐싱(Caching)하는 것이 대부분이었으며, Akamai와 같은 CDN 업체들이 자체 언어(Domain Specific Language, DSL)를 사용하여 캐시 서버에서 동적으로 컨텐츠를 다루는 기술을 선보이기 시작하던 때였다. 지금은 엣지 컴퓨팅(Edge Computing)이 활발하게 활용되고 있다. [본문으로]
- Version Control System [본문으로]
- Bomb Merge [본문으로]
- CI/CD Pipeline [본문으로]
- Infrastructure as Code [본문으로]
'Sorry Architecture' 카테고리의 다른 글
Bomb Merge (0) | 2024.03.14 |
---|---|
Static Stability (0) | 2024.02.23 |
Innovation Costs (0) | 2023.12.15 |
Defense of the Clones (클론의 방어) (0) | 2023.11.03 |
Pilot Light (0) | 2023.10.13 |