최근 글로벌 연구조사 기업, 가트너에서 발표한 “2024 주요 전략 기술 트렌드 10가지”에 “플랫폼
엔지니어링” 이라는 키워드가 선정되었습니다. 플랫폼 엔지니어링에 대해 알아보고, 주요 기술
트렌드로 선정된 이유, DevOps와의 연관성, 필요 역량 등에 대해 소개하겠습니다.
" 플랫폼 엔지니어링 " 이란 ?
플랫폼 엔지니어링은 이름 그대로, 플랫폼을 개발하고 관리하는 기술을 의미합니다. 여기서
“플랫폼”은, 서버, 네트워크 등의 인프라 구축, 배포 자동화 파이프라인, 서비스 모니터링 등의
복잡한 작업들을 개발자들이 쉽게 할 수 있도록 추상화시킨 플랫폼을 의미합니다. 줄여서
IDP (Internal Developer Platform, 또는 Portal)라고도 부릅니다.
DevOps가 트렌드가 된 이유
왜 내부 개발자를 위한 플랫폼을 개발해야하는 것일까요? 또 왜 플랫폼 엔지니어링이 트렌드
기술로 선정된 것일까요?
이 이유들을 설명하기 위해, DevOps가 트렌드가 된 이유에 대해 먼저 알아보겠습니다. DevOps는
운영과 개발을 함께 하자는 일종의 문화입니다. 이 문화는 현대 서비스들의 요구사항으로 인해
생겨나게 되었습니다.
현대 서비스들은 잦은 릴리즈에 방점을 두고 있습니다. 어떤 도메인이든, 같은 도메인을 가진
비슷한 서비스들이 너무나 많기 때문에 빠른 릴리즈를 통해 버그를 빠르게 해결하고, 요구사항을
빠르게 적용하는 것이 곧 시장 경쟁력으로 이어지기 때문입니다.
DevOps 이전의 개발 시스템은 좌측 하단 이미지처럼 모놀로식한 시스템이었습니다. 모놀로식이란
개발팀에서 개발을 해서 QA팀에게 서비스를 넘겨주고, QA팀에서 테스팅을 거친 후 운영팀에게
서비스를 넘겨주는 단일형 방식을 의미합니다.
이러한 시스템에서는 각 팀(QA, 개발, 운영 등)의 규모가 거대해질수록, 팀 간의 의사소통에
소요되는 리소스가 비례해서 커지게됩니다. 또한 운영팀이 운영하는 서비스에 대해 내부적인
로직을 자세히 알지 못하기때문에, 운영팀 자체적으로 해결하지 못하고 개발팀에 수정을
요청한다거나, 아주 작고 사소한 업데이트더라도 전체 서비스를 재배포해야하는 등의 비효율성이
발생할 수 있습니다.
이런 문제를 해결하기 위한 방법론으로 마이크로 서비스 아키텍처, 애자일, 데브옵스 등의 키워드가
떠오르게 되었습니다. 마이크로 서비스 아키텍처를 통해 팀을 기능/도메인 단위로 나누어서 각
기능/도메인 별로 독립적인 릴리즈가 가능하게 하고, 애자일 개발을 통해 세분화된 팀의 더 빠른
릴리즈가 가능해졌습니다. 추가적으로 팀 간 의사소통에 소요되는 리소스를 줄이고자 개발, 테스팅,
배포, 운영까지 각 팀에서 담당하게 하는 DevOps 문화까지 발전하게 되었습니다.
플랫폼 엔지니어링 을 통한 DevOps의 완성
DevOps은 이론적으로 너무나 훌륭한 문화이지만, 실제 DevOps 문화 내에서 개발을 하는
개발자들은 개발 뿐만 아니라 테스팅, CI/CD, 옵저버빌리티, 배포, 인프라, 네트워크 등에 대한
추가적인 학습이 필요하기 때문에 과한 인지 부하가 생길 수 있습니다. 이러한 과도한 인지 부하는
DevOps 문화 적용의 실패로 이어지기도 합니다. 팀 전체가 아닌 특정 인원에게만 데브옵스를
전담시켜서 인지 부하를 몰아주는 Shadow DevOps가 그 사례입니다.
이러한 DevOps의 한계를 돌파하기 위해 나온 개념이 바로 플랫폼 엔지니어링입니다.
플랫폼 엔지니어링은 소수의 DevOps 엔지니어들이 내부 개발자 플랫폼을 개발해서 인프라, 배포
파이프라인, 모니터링 등을 추상화 및 대시보드 형태로 제공하고, 개발자들은 이 UI 플랫폼을 통해
상대적으로 쉽게 배포/테스팅/운영을 해서 DevOps 문화를 지속시킬 수 있도록 만들자는
개념입니다.
필요 역량
플랫폼 엔지니어링 을 위해서는 아래와 같은 역량이 필요합니다.
개발
결론적으로 하나의 서비스를 개발하는 것이기 때문에, 높은 성능과 유지/보수를 위해 높은 개발 역량을 필요로 합니다.
기획 (요구사항 분석 등)
사내에 다양한 수준의 데브옵스 지식을 갖춘 개발자들이 있을 것입니다. 어떤 개발자는 코드만 작성할 줄 알고, 또 다른 개발자는 혼자서 배포까지 할 수 있는 정도의 데브옵스 역량을 갖추고있을 수 있습니다. 이렇게 다양한 내부 개발자들의 요구사항을 분석하고 조율해서 다수가 만족할 수 있을만한 플랫폼을 개발할 수 있어야합니다.
보안
플랫폼을 통해서 내부 개발자들이 인프라를 구축하거나, 서비스를 배포할 때 보안적으로 문제가 없도록 네트워크/어플리케이션 적으로 다양하고 수준 높은 보안 역량이 요구됩니다. 또한 내부 개발자들이 각각 필요한 리소스에만 접근할 수 있도록 하는 역할 기반 접근 제어 역시 세밀하게 설정되어야합니다.
오픈소스 및 통합
플랫폼은 Git, CICD, K8s, Monitoring, Secret Management, Authn, Authz 등 수많은 소프트웨어들의 조합으로 구성됩니다. 각 오픈소스들의 장단점을 잘 파악하고 목적에 맞는 소프트웨어를 평가, 선정 및 통합할 수 있는 역량이 필요합니다.
플랫폼 엔지니어링을 위해서는 다양한 분야에 걸친 높은 역량들이 요구됩니다. 따라서 내부에서
가용한 리소스들과 요구사항을 잘 고려해서 플랫폼 엔지니어링을 도입한다면, 안정적으로 DevOps
문화를 정착시켜 서비스의 품질 향상을 기대할 수 있을 것입니다.