⚙️플랫폼 엔지니어링이란?
우리가 DevOps에 대해 검색을 하다보면 함께 떠오르는 키워드가 하나 있습니다. 바로 플랫폼 엔지니어링인데요.
최근 저도 플랫폼 엔지니어링이란 키워드를 많이 접하게 되면서 플랫폼 엔지니어링이 구체적으로 무엇을 말하는지 궁금했고, 이번 기회에 정리를 해봤습니다.
그럼 같이 알아보시죠!
플랫폼 엔지니어링은 개발자의 생산성을 높여주는 내부 플랫폼(Internal Developer Platform, IDP)을 개발하고 유지보수하는 활동을 의미합니다. 즉, 플랫폼 엔지니어링이란 개발자를 위한 개발이라고 볼 수 있겠는데요.
그렇다면 플랫폼 엔지니어링은 DevOps와 어떤 차이가 있을까요?
🔎DevOps와 플랫폼 엔지니어링의 차이
두 가지 모두 조직 내 개발자를 대상으로 하는 활동이기 때문에 그 차이점이 분명하지 않을 수 있습니다. 그래서 두 활동을 함께 비교해보겠습니다.
먼저 DevOps는 소프트웨어 개발 접근 방식 중 하나로, 개발 주체과 운영 주체 간의 긴밀한 협업을 위한 것입니다.
그리고 플랫폼 엔지니어링은 DevOps에 필요한 각종 도구와 작업 프로세스 한 곳에 모은 플랫폼을 제공하는 활동입니다.
즉, DevOps 팀은 조직에게 적절한 개발 ,빌드, 테스트, 배포, Configuration, 자동화 도구를 도입함으로써 개발 프로세스를 정립하는 역할을 수행하고, 플랫폼 엔지니어링 팀은 이렇게 선정된 도구들을 파악, 추가 구현, 유지보수하여 조직 내 개발자들이 사용할 수 있도록 플랫폼(IDP)으로 만들어내는 역할을 수행하는 것이죠.
이렇게 IDP를 구성하게 된다면, 조직 내 다른 개발자들은 플랫폼이나 도구 자체에 대한 세세한 이해 없이도 플랫폼이 제공하는 일관성과 생산성을 누릴 수 있게 됩니다.
지금까지 살펴본 것처럼, 플랫폼 엔지니어링과 IDP는 실과 바늘같은 관계이기 때문에 IDP에 대해서도 그냥 넘어갈 수는 없겠습니다.
IDP는 내부 개발자 플랫폼이라고 했었죠. 이런 IDP는 대규모 개발 팀에게만 필요하다고 생각될 수도 있지만, 개발부터 배포까지 꾸준히 이뤄지는 팀이라면 안정적인 작업 프로세스를 위해 IDP를 고민해볼만 합니다.
사실 IDP에 대한 표준이 정립된 것은 아니기 때문에 각 조직마다 IDP에 대한 요구사항은 다를 수 있습니다. 또한 여러 개의 툴을 유기적으로 활용해서 IDP로 구성할 수도 있는 것이죠.
조직마다 차이는 있더라도 IDP가 가져야 할 필수 요소는 아래와 같이 7가지로 정리할 수 있습니다.
🛠️IDP의 필수 구성요소 7가지
파이프라인
소프트웨어 코드를 개발 중이라면 코드에 문제가 없는지 검증이 필요한데요. 이런 코드 검증을 자동으로 해주는 파이프라인이 있다면 개발자들의 생산성이 향상될 것입니다.
파이프라인 관련 툴로는 GitHub Action, GitLab CI Runner, Jenkins 등이 있습니다.
아티팩트 저장소
컴파일이 완료되었거나 컨테이너화된 이미지를 저장하는 아티팩트 저장소는 조직 내 개발 프로세스와 보안을 위해서 필수적입니다. 또한 아티팩트 저장소가 있다면 문제가 발생했을 경우 신속하게 이전 버전의 이미지를 가져와서 사용할 수도 있겠죠.
아티팩트 저장소 관련 툴로는 CRI-O, Docker, Nexus 등이 있습니다.
런타임 관련
애플리케이션이 배포되어 동작하는 런타임 기간 중에 보안, 네트워크 관련 이슈 등을 실시간으로 제어하는 것이 중요합니다. 런타임 보안 관련 툴로는 Falco 등이 있습니다.
또한 애플리케이션 배포할 수 있는 오케스트레이션 툴 역시 여기에 포함되는데요. 오토스케일링이나 셀프 힐링(Self-healing), 로드 밸런싱 기능이 강력한 Kubernetes가 대표적인 툴이라고 할 수 있을 것입니다.
API Gateway / Service Proxy
두 요소 모두 애플리케이션을 외부로 서비스하기 위해 필수적인 것입니다.
관련 툴로는 Envoy, Nginx, Traefik 등이 있습니다.
모니터링
소프트웨어 사이클에서 모니터링과 로그 추적은 정말 중요한 요소입니다. 애플리케이션에 발생한 문제를 해결하고 안정적인 서비스를 보장하는 데에 결정적인 역할을 하기 때문이죠.
모니터링 관련 툴로는 ELK 스택, PLG 스택이 있습니다.
FinOps 및 지속가능성 관련
FinOps는 클라우드 운영에 소요되는 비용을 관리하는 활동을 의미합니다. 그리고 여기서 말하는 지속가능성이란, 사용하지 않는 리소스의 동작을 멈춰 불필요한 에너지 소비를 줄이는 것을 말합니다.
지속가능성과 비용 절약을 위한 툴로는 kube-green 등이 있습니다.
데이터 관리
애플리케이션 동작에 필요한 데이터뿐만 아니라, 서비스 운영에 사용되는 다양한 시스템으로부터 실시간으로 발생하는 데이터 역시 중요할 수 있습니다.