소프트웨어 엔지니어링의 주요 목표 중 하나는 문제를 해결하고 가치를 창출하는 것이지만 이러한 목표는 현대 개발에서의 일상적인 마찰로 인해 흐려질 수 있습니다. 내부 개발자 플랫폼(IDP)은 개발자 부담을 덜어주어 소프트웨어 개발에 집중할 수 있도록 설계되었습니다. IDP의 주된 목표는 소프트웨어를 빠르게 출시하는 것뿐만 아니라 애플리케이션 빌드 및 배포를 위한 안전하고 효율적이며 잘 지원되는 템플릿과 자동화(종종 '최적의 경로'라고 함)를 만들어 개발자의 정신적 부담을 줄이는 것입니다.
내부 개발자 플랫폼은 전담 플랫폼팀이 빌드하고 유지보수하는 선별된 기술 및 도구 모음을 통합합니다. 이 스택에는 오픈소스 프로젝트에서 지원하는 컨테이너 조정 솔루션, 코드형 인프라(IaC) 도구, CI/CD 파이프라인이 포함되는 경우가 많습니다.
내부 개발자 플랫폼(IDP)은 개발자가 사용자인 제품으로 접근해야 합니다. 사용 사례를 해결하고 의견을 수집하며 반복을 통해 플랫폼을 지속적으로 미세 조정하는 것이 중요합니다. IDP는 이러한 도구를 연결하는 레이어로, 복잡성을 추상화하여 개발자가 간단한 셀프서비스 모델을 통해 태스크를 수행할 수 있게 합니다. 목표는 올바른 방법을 쉬운 방법으로 만들어 개발자가 자신감과 자율성을 가지고 빌드하고 배포할 수 있게 하는 것입니다.
인지 부하는 사람의 작업 기억에서 사용되는 모든 정신적 노력을 말합니다. 개발자가 사용할 수 있는 정신적 대역폭이라고 생각하면 됩니다. 코딩 이외의 태스크에 대역폭이 소모되면 복잡한 문제 해결에 집중할 수 있는 능력이 떨어집니다.
개발자는 간단한 변경사항을 배포하기 위해 수십 가지의 다양한 도구, 대시보드 또는 구성 파일을 전환해야 하는 경우가 많습니다. 컨텍스트가 전환될 때마다 뇌는 새로운 정보 세트를 불러와야 하므로 정신적으로 부담이 됩니다. 도구와 프로세스가 끊임없이 전환되면 인지 부하가 증가하여 번아웃과 더 많은 실수가 발생하고 혁신 속도가 저하될 수 있습니다.
플랫폼 엔지니어링은 내부 개발자 플랫폼을 설계, 빌드, 유지보수하는 분야입니다. IDP가 제품이라면 플랫폼 엔지니어링팀은 수명 주기를 책임지는 제품팀이라고 생각하면 됩니다. 고객은 조직의 개발자입니다.
이 방법은 플랫폼을 다른 소프트웨어 제품과 동일하게 취급한다는 의미입니다. 플랫폼 엔지니어링팀은 개발자 니즈를 파악하고 로드맵을 정의하며 안정적이고 사용하기 쉬우면서 신뢰할 수 있는 도구 모음을 제공해야 합니다.
자주 하는 질문 중 하나는 플랫폼과 포털 간의 차이점에 대한 질문입니다. 이러한 용어가 상호 호환적으로 사용되는 경우가 있지만 개발자 경험의 서로 다른 계층을 나타냅니다. 내부 개발자 플랫폼(IDP)은 개발 수명 주기를 지원하는 모든 도구, 워크플로, 인프라를 포괄하는 전체 엔진이라고 생각하면 됩니다.
반면에 내부 개발자 포털은 해당 엔진의 대시보드입니다. 개발자가 플랫폼 기능에 액세스할 수 있는 단일 중앙 집중식 장소를 제공하는 그래픽 사용자 인터페이스(GUI)입니다. 개발자 포털은 개발자가 복잡한 내부 작동 방식을 이해하지 않고도 도구를 발견 및 사용하고 문서를 보고 새로운 서비스를 스캐폴딩하며 빌드 상태를 확인할 수 있도록 도와줍니다. 사용성과 검색 가능 여부가 향상되도록 포괄적인 IDP에 개발자 포털이 포함되는 경우가 종종 있지만 플랫폼 자체는 기본 기술과 자동화된 프로세스의 완전한 집합입니다.
모든 회사의 니즈는 다르지만 대부분의 IDP는 함께 작동하는 몇 가지 핵심 구성요소로 빌드됩니다. 이러한 구성요소는 개발부터 프로덕션에 이르기까지 간소화되고 안전하며 효율적인 경로를 만드는 데 중점을 둡니다.
개발자 경험은 인프라의 기본 복잡성을 추상화하는 중앙 인터페이스입니다. 개발자 포털이나 명령줄 인터페이스(CLI)를 통해 개발자에게 필요한 도구, 문서, 리소스에 대한 셀프서비스 액세스를 제공하는 경우가 많습니다. 예를 들어 Cloud Code와 같은 IDE 플러그인을 사용하면 개발자가 익숙한 도구 내에서 직접 코드를 작성하고 디버깅할 수 있으며 Backstage on Google Cloud와 같은 솔루션으로 빌드된 포털은 전체 소프트웨어 생태계에 대한 단일 통합 뷰를 제공합니다.
최적의 경로라고도 하는 앱 템플릿은 개발자에게 새로운 애플리케이션에 사용할 수 있는 사전 정의된 권장 구조를 제공합니다. 이러한 템플릿에는 상용구 코드, 구성된 CI/CD 파이프라인, 코드형 인프라 파일, 모니터링 대시보드가 포함될 수 있습니다. App Design Center와 같은 리소스를 사용하면 팀에서 이러한 템플릿의 카탈로그를 만들고 관리하여 권장사항을 쉽게 찾고 재사용할 수 있습니다. 이 방법은 개발자 온보딩을 가속화하고 모든 서비스에서 일관성을 유지합니다.
이 구성요소는 보안을 개발 워크플로에 직접 통합합니다. Identity and Access Management(IAM), 역할 기반 액세스 제어(RBAC), 네트워크 정책, 취약점 스캔, 인프라 강화와 같은 보안 정책을 자동으로 적용합니다. 보안을 플랫폼 기반에 삽입하면 팀은 '보안을 시프트 레프트'하고 개발 수명 주기 초기에 잠재적인 문제를 해결할 수 있습니다. 이렇게 하면 프로덕션 직전에 보안 병목 현상이 발생하지 않게 할 수 있습니다.
애플리케이션 중심 기반은 기본 인프라 위에 표준화된 추상화 계층을 만듭니다. 주요 운영 문제에 대한 통합 모델을 제공하여 모든 환경에서 작동하는 네트워킹, 보안, 모니터링 가능성에 대한 단일 방법을 제공합니다. 이러한 일관성 덕분에 관리가 간소화되고 개발자의 인지 부하가 줄어듭니다. 개발자는 특정 Google Kubernetes Engine(GKE) 클러스터 구성과 같은 각 배포 대상의 고유한 세부정보에 대해 걱정할 필요가 없습니다.
클라우드 애플리케이션 플랫폼은 전체 IDP의 백본 역할을 하는 통합된 클라우드 서비스 모음입니다. 컴퓨팅, 스토리지, 네트워킹, Cloud API, CI/CD 도구, 모니터링 가능성을 통합 시스템 하나에 결합합니다. Google Cloud와 같은 포괄적인 기반 위에 IDP를 빌드하면 팀에서 강력한 관리형 서비스를 활용하여 개발 속도를 높이고 신뢰성을 개선하며 수요에 맞게 플랫폼을 확장할 수 있습니다.
내부 개발자 플랫폼을 도입하면 엔지니어링 조직에 상당한 이점을 제공할 수 있습니다.
개발자 경험 개선
IDP는 인지 부하를 줄이고 간단한 셀프서비스 워크플로를 제공하여 개발자 경험을 향상시키는 데 도움이 됩니다.
TTM(time to market) 단축
자동화와 표준화는 소프트웨어 빌드 및 배포 프로세스를 가속화하므로 팀이 고객에게 더 빠르게 가치를 제공할 수 있습니다.
신뢰성 및 일관성 향상
IDP는 최적의 경로를 통해 권장사항을 적용하는 데 도움이 되며 이를 통해 애플리케이션을 보다 일관되고 안정적으로 배포할 수 있습니다.
보안 및 규정 준수 강화
보안 정책을 플랫폼의 템플릿과 자동화된 워크플로에 직접 통합하여 모든 새로운 서비스가 처음부터 규정 준수 요구사항을 충족하도록 할 수 있습니다.
개발자 자율성 향상
플랫폼 관리를 중앙 집중화하면 개발자가 기능에 집중하고 애플리케이션 수명 주기를 자율적으로 관리할 수 있습니다.
IDP가 실제로 작동하는 방식을 알아보기 위해 Google Cloud를 사용하는 일반적인 내부 개발자 플랫폼 예시를 살펴보겠습니다. 개발자가 자체 데이터베이스와 CI/CD 파이프라인이 필요한 새로운 마이크로서비스를 가동해야 한다고 가정해 보겠습니다.
개발자는 Cloud Source Repository를 수동으로 만들고 Terraform 모듈을 작성하여 Cloud SQL 데이터베이스를 프로비저닝하고 Google Kubernetes Engine(GKE) 배포 파일(YAML)을 생성 및 구성하고 Cloud Build에서 새 트리거를 설정하며 모든 항목에 대한 IAM 권한을 관리해야 합니다. 이 작업이 완료되는 데 며칠이 걸릴 수 있으며 여러 팀에서 이 작업에 참여할 수도 있습니다.
프로세스가 훨씬 간단합니다.
포털에서 요청: 개발자가 개발자 포털에 로그인하여 'Cloud SQL 데이터베이스가 있는 Python 마이크로서비스'에 대한 사전 빌드된 템플릿을 찾습니다.
간단한 입력: 서비스 이름과 팀 이름이 포함된 간단한 양식을 작성합니다.
조정 시작: 개발자가 '만들기'를 클릭하면 플랫폼 조정자가 인계합니다.
자동화된 작업: 조정자는 백그라운드에서 Google Cloud API를 사용하여 일련의 자동화된 태스크를 수행합니다.
완료: 몇 분 안에 프로세스가 완료됩니다. 개발자는 구성을 한 줄도 작성하지 않고도 새 저장소, GKE 스테이징 환경에서 실행 중인 애플리케이션, 데이터베이스 사용자 인증 정보에 대한 링크가 있는 알림을 받습니다.
내부 개발자 플랫폼을 구성하는 개념과 기술을 자세히 알아보려면 다음 추가 리소스를 확인하세요.