플랫폼 엔지니어링은 클라우드 네이티브 시대에 소프트웨어 엔지니어링 조직의 작업을 촉진하고 가속화하기 위한 플랫폼을 설계하고 제공하는 분야이다. 다시 말해, 플랫폼 엔지니어링의 목적은 "소프트웨어 엔지니어링 조직이 일을 더 빠르게 잘 할 수 있도록 하는 것"이고, 그 문제를 "플랫폼"을 통해 해결한다.
애플리케이션을 빠르게 제공할 수 있도록 지원하는 DevOps와도 비슷한 목적을 가지고 있다. 개발과 운영 조직의 비효율성을 문화와 도구들을 이용해 해결하려는게 DevOps라면, 플랫폼 엔지니어링은 DevOps의 도구로 '플랫폼'을 채택한 것이라는 차이가 있다. 플랫폼 엔지니어링 팀은 DevOps 방법론 위에서 소프트웨어 엔지니어링 팀, 프로덕트 팀을 지원할 수 있는 플랫폼을 만든다.
플랫폼 엔지니어링은 아래와 같은 장점을 가지고 있다.
-
제품 팀의 인지 부하를 줄여 제품 개발 및 제공을 가속화할 수 있다.
-
플랫폼 기능을 구성하고 관리할 전문가를 전담하여 플랫폼 기능에 의존하는 제품의 안정성과 복원력을 향상시킬 수 있다.
-
기업 내 여러 팀에서 플랫폼 도구와 지식을 재사용하고 공유하여 제품 개발 및 제공을 가속화할 수 있다.
-
제품 및 서비스의 보안, 규제 및 기능 문제의 위험을 줄일 수 있다.
전통적인 방식에서는 Software Engineer가 티켓이나 기타 방법들을 이용해 인프라 팀에 작업을 요청하였다. 그러면 인프라 팀은 직접 인프라 작업을 수행한다.
반면 내부 개발자 플랫폼은 인프라팀이 수동으로 처리하던 작업을 대체한다. Software Engineer가 인프라 작업에 대해 '요청'하는 것이 아닌 직접 '작업'을 하는 것이다. 하지만 인프라를 직접 만드는 것은 아니고, 플랫폼을 통해 추상화 레이어를 거쳐서 작업이 이뤄지며 실제 인프라 관련 작업은 플랫폼이 수행한다.
플랫폼 엔지니어링 팀은 여기서 내부 개발자 플랫폼을 만드는 역할을 한다.
플랫폼을 단순히 부품 또는 요소로 생각하는 것이 아닌, 하나의 프로덕트로 바라보아야 한다. 아무리 Internal Platform이라고 해도 그것 자체가 일종의 프로덕트라고 볼 수 있다. 플랫폼 엔지니어링 팀은 Productivity를 가지고, 내부 고객들의 니즈를 파악하여, 내부 고객들이 필요로 하는 걸 제품으로 만들어야 한다.
플랫폼 엔지니어링에 사용되는 플랫폼은 플랫폼이 제공할 수 있는 가치 중 가장 얇은 가치를 제공해야 한다. 내부 플랫폼이 엄청나게 뛰어난 UI나 UX를 제공하는게 목표로 설정되지 않듯, 플랫폼이 제공해야하는 기본적인 가치만 제공한다면 (= 충분한 Quality만 제공할 수 있다면), 가장 쉬운 기술을 선택해야한다.
참고