앞으로도 종종 올리게 될텐데 플랫폼 엔지니어링에 관해서 관심이 많습니다. 물론 지금 하고 있는 일도 플랫폼 엔지니어링과 깊은 관련이 있습니다. 플랫폼 엔지니어링이 비교적 최근 몇년내에 떠오른 영역이라 아직 보급이 많이 된 것은 아니라고 느끼기에 글을 쓸때마다 관련 설명을 조금씩 덧붙일 것 같습니다.
이글은 피처플래그 서비스를 제공하는 LaunchDarkly에서 쓸 글로 SRE, Platform Engineering, DevOps를 비교하는 글입니다. 이쪽도 명확히 구분하기가 쉽진 않고 아마 조직 마다 다를 것이라고는 생각하지만 그래도 새로운 용어를 만든 배경이 있기 때문에 이 글에서 간단히 설명하고 있지만 핵심을 잘 설명했다고 생각합니다.
SRE는 Google에서 만든 용어로 운영에 소프트웨어 엔지니어링 접근 방식을 취한 것으로 안정적으로 운영되는 시스템을 만들고 유지합니다. 누군가는 이를 프로덕션 엔지니어링의 리브랜딩 정도로 생각하지만 이전 프로덕션 엔지니어가 프로덕션 환경을 안정적이로 최신 상태로 유지하는데 집중했다면 SRE는 애플리케이션의 업타입, 확장성, 성능을 최적화하기 위해 사전 예방적 아키텍처와 자동화에 집중합니다.
플랫폼 엔지니어링은 클라우드 네이티브와 마이크로서비스가 확장되면서 개발자가 많은 부분을 직접 할 수 있게 되었습니다. 누군가는 자유로워서 좋아하지만 누군가는 DevOps가 운영까지 강제한다고 불평합니다. 하지만 복잡성이 증가하고 비용도 많이 든기 때문에 내부 개발자 플랫폼을 통해서 가드레일을 제공하고 표준화하고 중앙집중화하기 위한 접근이 플랫폼 엔지니어링입니다.
SRE와 플랫폼 엔지니어링은 프로세스 자동화같은 공통 목표가 있지만 플랫폼 엔지니어링이 셀프서비스를 지원하는 플랫폼 구축에 집중한다면 SRE는 애플리케이션의 안정성, 확장성 가용성에 집중합니다.
DevOps는 소프트웨어 개발팀과 운영팀의 격차를 해소하기 위한 관행입니다. 개발팀 운영 환경을 모르고 코드를 작성하고 운영팀은 소프트웨어의 동작 방식을 이해하지 못했기 때문에 비효율적이었고 오류도 발생했기 때문에 이러한 간극을 없애기 위해 등장했습니다. DevOps는 2000년대 초반에 등장했지만 제대로 도입되지 못한 경우도 많았는데 플랫폼 엔지니어링은 DevOps의 진화나 확장으로 생각할 수 있습니다.