Woongjae Lee
Daangn - Frontend Core Team ex) NHN Dooray - Frontend Team Leader ex) ProtoPie - Studio Team
5/7/2025
Timothy @ Daangn Frontend Core
Software Engineer, Frontend @Daangn Frontend Core Team
ex) Senior Lead Software Engineer @NHN Dooray (2021 ~ 2023)
ex) Lead Software Engineer @ProtoPie (2016 ~ 2021)
ex) Microsoft MVP
이 웅재
셀프 서비스 API, 도구, 서비스, 지식 및 지원으로 구성된 하나의 토대
매력적인 조직 내부 제품의 형태로 구성
자율적 애플리케이션 팀들은 이 플랫폼을 활용해서 팀간 조정 비용을 줄이면서도 더 빠른 속도로 제품의 기능들을 전달할 수 있다.
플랫폼이 아닌 것이 무엇인가
주어진 어떤 대상을 플랫폼이라고 부를 수 있으려면 '플랫폼 엔지니어링' 이라는 요소가 필요하다.
'위키 페이지' 는 엔지니어링이 필요 없으므로 플랫폼이 아니다.
'클라우드 자체' 는 방대한 서비스의 집합체
플랫폼을 개발하고 운영하는 하나의 분야
비즈니스에 레버리지를 전달하기 위해 전체 시스템의 복잡성을 관리하는 것을 목표로 함
폭넓은 애플리케이션 개발자층을 위한 소프트웨어 기반 추상화로서의 플랫폼을 개발하고
이를 비즈니스의 토대로 운영하는 큐레이션 제품 접근 방식을 통해 목표 달성
(플랫폼 엔지니어링의 맥락에서) 소수의 플랫폼 팀 엔지니어들의 작업이 조직 전체의 업무를 줄여주는 것을 의미
플랫폼이 레버리지를 달성하는 두 가지 방식
애플리케이션 엔지니어들이 비즈니스 가치를 창출하는 과정에서 생산성을 높이는 것
애플리케이션 엔지니어링 팀 간의 중복 작업을 제거하여 엔지니어링 조직의 효율성을 높이는 것
플랫폼을 하나의 제품으로 보는 것이 매우 중요
플랫폼을 매력적인 제품으로 개발한다는 것
플랫폼의 기능을 결정할 때 고객 중심적 접근 방식을 취한다는 뜻
사용자가 주된 초점
다양한 기능 요구사항 중 제품에 반영할 것들을 잘 큐레이션하는 것은 물론이고 반영하지 않을 것들을 신중하고 세련되게 큐레이션하기 위해 노력한다.
가장 심각한 문제는 인프라와 개발자 도구 관련 영역에서 발생하며, 그런 문제들은 조직이 플랫폼 엔지니어링을 요구하게 되는 가장 큰 원인이다.
이는 그런 시스템들이 공용 클라우드 및 오픈소스 소프트웨어와 가장 밀접하게 통합되어 있기 때문이다. 이 두 가지 트렌드는 지난 25년간 업계에 많은 변화를 가져왔는데 모든 것이 고르게 개선되지는 않았다.
결과적으로 애플리케이션을 구축하기는 쉬워졌지만 유지보수는 더 어려워졌으며, 시스템이 성장할수록 조직의 발전 속도는 마치 늪 속을 걷는 것처럼 느려졌다.
결국 우리는 소프트웨어의 작성과 유지보수에 관한 경제적 현실의 문제로 돌아올수밖에 없다.
(추정에 따르면) 소프트웨어의 생애 주기 비용 중 최소 60 ~ 75%가 초기 개발 이후에 발생하며, 그 중 약 4분의 1은 전적으로 마이그레이션 같은 '적응적' 유지보수에 사용된다.
클라우드와 OSS는 유지보수 비용을 줄이기는 커녕 이 문제를 더욱 악화시켰다.
이들 때문에 기본요소 계층이 계속 늘어나기 때문이다.
여기서 기본요소는 광범위한 기능을 제공하지만 서로 통합되어 있지 않은 범용 구성요소를 말한다.
이들이 제대로 동작하려면 접착제가 필요하다.
통합 코드, 일회성 자동화, 구성, 관리 도구 등등
이 접착제는 모든 것을 하나로 묶어주지만, 동시에 미래의 변경을 매우 어렵게 만드는 '끈적임'의 원인이 된다.
이 접착제가 점차 확산되면서 '과도한 일반화의 늪'이 만들어진다.
애플리케이션 팀들은 빠르게 구축할 수 있는 기술을 선택하고 최신 기능 선호한다.
맞춤형 접착제를 만들어낸다.
이런 과정이 반복되면서 더욱 복잡한 모습이 된다.
더 큰 문제는 시간이 지나면서 이 끈적이는 혼란을 변경하기가 대단히 어려워진다는 점이다.
이러한 상황을 피하는 핵심은 접착제의 양을 제한하는 것이다.
플랫폼 엔지니어링은 OSS와 벤더의 선택을 조직의 필요에 맞게 제한된 집합으로 추상화하고 강력한 의견을 제공함으로써 관심사의 분리를 가능하게 한다.
추상화와 캡슐화의 개념을 구현하고 사용자를 바탕 복잡성으로부터 보호하는 인터페이스를 구축함으로써 필요한 접착제의 양을 제한한다.
지난 25년간 소프트웨어 산업은 엄청난 변화를 겪었다.
그 시작은 인터넷이 대중화된 것이다.
과도한 일반화의 늪은 더 많은 것을 더 빠르게, 실패 없이 배포하라는 압박 때문에 존재한다.
인터넷은 새로운 소프트웨어에 대한 수요 증가
소프트웨어는 하드웨어에서 실행되어야 함
데이터센터에 더 많은 하드웨어 도입
인프라 엔지니어링의 성장
인프라 팀과 상호작용하는 애플리케이션 개발자들은 자신들이 처리해야 하는 하드웨어 문제들의 폭과 깊이에 계속 좌절
좌절한 애플리케이션 개발자들이 공용 클라우드를 반김
PaaS 서비스에서 IaaS 로
쿠버네티스의 부상과 클라우드 네이티브
쿠버네티스는 많은 것을 표준화했지만 복잡성 측면에서 들이 되지 않았다.
각각의 애플리케이션을 제대로 지원하기 위해서는 세부적인 설정이 대단히 많이 필요
물 새는 추상화
인프라 기본요소와 이를 활용하는 애플리케이션이 폭발적으로 증가하면서,
이들을 누가 어떻게 운영할 것인가 하는 문제가 대두
처음엔 시스템 관리자
24시간 운영 지원의 중요성이 커지면서 운영 엔지니어링 팀이 성장했다.
데브옵스라 부르는 방식의 탄생과 광범위한 도입
개발과 운영 활동을 통합하는 모델
문화적 변화
분리형과 통합형
구글의 사이트 신뢰성 엔지니어링 SRE
정리하자면,
애플리케이션 팀이 늘어났고,
OSS와 클라우드 기본요소들도 늘어났고,
이들을 선택하는 문제도 더욱더 복잡해졌다.
왜 이런 상황에?) 빠른 전달을 원했기 때문이다.
문제 해결에 적합한 최신 시스템을 확용해야 했다.
사이버 공격과 취약점 발견이 급증했고, 이로 인해 인프라와 OSS도 이러한 위험에 대응하기 위해 더 빠르게 변화하고 있다.
이러한 이유들로 애플리케이션 팀에게 접착제를 수정하고 다시 테스트하거나 소프트웨어를 마이그레이션해야하는 작업을 요구한다.
변화에 대한 압박은 개별 팀의 의사결정이 가져온 작기적 결과물이 접착제와 뒤섞인, 마치 늪과도 같은 엉망진창의 상황을 만들었다.
상황
OSS와 클라우드 시스템에서 발생하는 새로운 복잡성을 따라잡을 수 없다.
애플리케이션은 복잡해지고 개발자의 생산성은 떨어진다.
해결책
플랫폼을 구축해서 이러한 복잡성을 관리한다.
문제
플랫폼 구축에는 상당한 투자가 필요하다.
구축과 지원 비용뿐만 아니라, 애플리케이션 팀의 OSS와 클라우드 기본요소 선택을 제한하는 데 따른 간접비용도 포함된다.
플랫폼 엔지니어링 팀의 설립은 조직 개편, 역할 변경, 회사의 주력 분야 도입에 따른 추가부담을 수반한다.
설명할 내용
이러한 투자를 정당화하고 장기적 가치를 전달하는지 설명
선택의 폭발적 증가가 전적으로 나쁜 것은 아니었다.
그린필드 애플리케이션을 과거보다 훨씬 빠르게 출시할 수 있게 됐고,
좋아하는 시스템을 사용할 때 더 큰 자율성과 주인의식을 느낀다.
기업이 다양한 선택으로 인한 지원 부담과 장기 비용 절감에 초점을 맞추기 시작하면 이러한 이점은 종종 잊힌다.
리더들의 본능적인 첫 반응은 권위에 호소하여 표준을 규정하는 것
전문가들도 최적의 선택을 하기에는 비즈니스 요구사항을 충분히 이해하기 어렵고
결국 애플리케이션 팀이 고통을 겪게 된다.
권위에 의한 표준화만으로는 부족하다.
권위에 호소하는 표준 규정 대신, 플랫폼 엔지니어링은 광범위한 요구사항을 충족할 수 있는 소수의 기본요소를 큐레이션하는 고객 중심의 제품 접근 방식을 취한다.
이러한 방식을 잘 적용한다면, 하향식 명령으로 인한 최악의 결과를 피하면서도 사용되는 OSS와 클라우드 기본요소의 수를 줄이는 것이 가능하다.
한 걸음 더 나아가 남은 요소들과의 '접착제'를 줄이는 것을 목표로 한다.
기본요소들을 더 광범위한 요구를 충족할 수 있는 체계적인 플랫폼 역량들로 추상화함으로써 애플리케이션 수준의 접착제를 대부분 제거할 수 있다.
테라폼 관리를 통한 설명
마이그레이션 관리가 플랫폼의 가치에서 중요한 부분을 차지한다.
애플리케이션과 기본요소들의 수명은 길다. 그 수명들은 각각 독립적이다. 긴 수명 동안 이들은 수많은 변화를 겪는다. 그러한 변화들이 모여 높은 유지보수 비용이 발생한다.
다음과 같은 방식으로 이러한 비용을 절감한다.
사용 중인 OSS 및 클라우드 시스템의 다양성 감소
API를 통한 OSS 및 벤더 시스템의 캡슐화
플랫폼 API가 OSS와 벤더 시스템의 모든 측면을 완벽하게 캡슐화하지는 못하더라도, '충분히 좋은' API라면 구현의 상당 부분을 추상화할 수 있다. 플랫폼의 보호 덕분에 애플리케이션을 바꿀 필요가 없다.
플랫폼 사용에 대한 관측성 확보
플랫폼을 사용하는 애플리케이션의 의존성 상태에 대한 가시성 혹은 관측성은 의존성 업그레이드가 필요할 때 그 부담을 줄여준다.
소프트웨어 개발자가 있는 팀에 OSS 및 클라우드 시스템 소유권 부여
온콜 근무는 싫어한다. 하지만 자체 애플리케이션으로 인한 문제만 대응한다면 받아들인다.
대다수의 기업에서는 인프라, OSS, 그리고 이들을 연결하는 접착제로 인한 운영 문제가 애플리케이션 코드 자체의 문제를 압도하고 있다.
더 높은 수준의 회복 탄력성을 추구하는 애플리케이션이 여러 가용 영역, 클라우드 지역, 또는 데이터센터에 걸쳐 배포될 때 볼 수 있다.
플랫폼 엔지니어링은 애플리케이션 팀을 대신해 장애 조치를 처리할 수 있는 탄력적인 추상화를 구축함으로써 이 문제를 해결하고 심야 긴급 호출을 줄인다.
바탕 시스템의 운영 복잡성을 플랫폼 추상화 뒤로 숨기면, 그러한 복잡성을 플랫폼 팀이 소유하고 관리하는 것이 가능해진다.
이를 위해서는 지원하는 옵션을 제한해야 한다. 그래야 추상화 경계선을 핵심 서비스 집합으로 상향 이동할 수 있으며, 각 서비스는 광범위한 애플리케이션 용례를 처리할 수 있다.
기본 요소들과 그 복잡성을 관리할 플랫폼을 구축할 수 있는 팀이 필요하다.
현재 인기 있는 플랫폼 인접 접근 방식은 네 가지이다.
이들은 모두 조직에 가치 있는 기술을 제공하지만,
플랫폼 구축에 필요한 초점과 기술의 조합을 갖추지는 못했다.
플랫폼 엔지니어링은 이러한 엔지니어 그룹들이 각자의 사일로에서 벗어나 균형 잡힌 플랫폼을 만드는 더 광범위한 임무를 가진 팀에서 일할 것을 요구한다.
다음과 같은 균형이 추가되어야 한다.
인프라 팀 ) 인프라 역량과 개발자 중심의 단순성 사이의 균형
개발 도구 팀 ) 개발 경험과 프로덕션 지원 경험 사이의 균형
데브옵스 팀 ) 애플리케이션별 최정의 접착제와 더 많은 애플리케이션을 지원하는 범용 소프트웨어 사이의 균형
SRE 팀 ) 신뢰성과 기능 민첩성, 비용 효율성, 보안, 성능 등 다른 시스템 특성 사이의 균형
조직의 기대를 의도적으로 재설정함으로써, 플랫폼 엔지니어링은 마침내 늪을 정리할 기술을 구축하는 데 집중하는 팀을 만들 수 있게 한다.
By Woongjae Lee
Daangn - Frontend Core Team ex) NHN Dooray - Frontend Team Leader ex) ProtoPie - Studio Team