We Can Do Better: 개발자 플랫폼 효율화 이야기

We Can Do Better: 개발자 플랫폼 효율화 이야기

요약: 비효율적인 업무 프로세스 개선을 통해 생산성 향상을 꾀하는 생산성플랫폼 팀의 개발자 플랫폼 구축 이야기를 공유합니다.

시작하며

안녕하세요. 카카오페이증권 기술플랫폼 조직에서 엔지니어링 생산성을 위한 업무를 하고 있는 비토, 타키, 이안입니다.
저희 조직은 비즈니스 개발과정에서 필연적으로 맞닥뜨릴 수밖에 없는 인프라 환경과 플랫폼 간에 다양한 문제점들을 플랫폼 엔지니어링이라는 관점에서 고민하며 해결해 나가고 있습니다.
비즈니스 개발을 위한 과정에서 당연시되어 온 불편함들을 “왜?”라는 질문으로부터 플랫폼 엔지니어링과 생산성이라는 키워드를 바탕으로 어떻게 해결하고 노력해 왔는지 경험을 공유하고자 합니다.

개발자 생산성과 플랫폼 엔지니어링

24년부터 IT 업계에서는 “플랫폼 엔지니어링” 이란 키워드가 많이 언급되기 시작했는데요. 그동안 저희도 카카오페이증권이 생각하는 DevOps문화AWS Summit 2024 키노트를 통해 내부에 다양한 시도를 하고 있는 내용을 공유해 왔습니다.

플랫폼 엔지니어링은 기업마다 해석이 다를 수 있지만, 새로운 기술이나 개념보다는 복잡해지는 Infrastructure, DevOps 환경을 개선하기 위한 문제 해결 관점으로 생각하는데요. 카카오페이증권은 금융 서비스 특성상 규제와 내부 환경들에 맞게 플랫폼 엔지니어링의 목적을 먼저 정의하고 그에 맞는 문제해결을 찾아 나가기로 했습니다.

  • 카카오페이증권 개발문화, 일하는 방식과 규제환경, 비즈니스 특성에 맞게 고려되어야 한다
  • 플랫폼 엔지니어링은 방법이나 관점의 도구로서의 역할일 뿐, 근본적인 목적은 엔지니어링 생산성을 높여서 비즈니스에 기여해야 한다
  • 소프트웨어 개발 수명 주기(Software Development Life Cycle, SDLC) 과정에서 필요한 다양한 도구들과 업무프로세스를 구성하고 연결된다
  • 추상화된 플랫폼은 소프트웨어 엔지니어가 누구의 도움 없이 문제해결을 할 수 있도록 기능이 제공되어야 한다
  • 추상화된 플랫폼은 프로덕트로서(Platform as a Product) 높은 수준으로 관리되어야 한다

여러 오픈소스1 프로젝트를 참고했지만 카카오페이증권의 환경에 알맞은 IDP(Internal Developer Platform, 개발자플랫폼, 이하 WECAN) 를 구축하기로 했습니다.

WECAN: 일하는 과정의 처음부터 끝까지

여러분 들의 개발조직에서는 신규 입사한 동료가 README, OWNERS 파일이나 단순한 텍스트를 수정해서 운영환경 배포 에 기여하는 경험을 획득 해보기 위해서 얼마나 편리한 과정을 확보하고 있나요? 아쉽지만 금융 서비스를 제공하는 환경이다 보니 코드를 통해 비즈니스 에 기여하는 과정보다, 내부의 다양한 규제를 위한 툴과 업무방식을 학습하는 시간이 더 많이 소요되고 있었습니다.

위의 이미지는 소프트웨어 생명과정의 생산성을 높이기 위해 우리가 반복하고 있는 업무 과정을 표현한 것으로, 다양한 개발 업무 과정 속에서 수집된 개발자들의 행동 지표들을 통해 새로운 개선 과제를 도출해 나가는 과정을 보여줍니다.
그 과정들이 얼핏 보면 그리 길지 않은 작업의 연속이지만, 그 속에서 과연 개발자 크루들이 겪고 있는 현실은 어땠을까요?

아래는 하나의 MSA 애플리케이션을 운영에 신규 구성하기 위해 개발자 크루가 요청한 업무 기록들입니다.

얼마나 많은 과정을 학습하고 요청이 완료되기까지 기다려야 했을까요?

그래서 저희는 궁극적으로는 어제 입사한 개발자도 오늘 코드를 만들고 배포할 수 있습니다라는 목표로 계정 관리부터 다양한 인프라와 플랫폼 업무요청을 연결해 주고, WECAN 에서 연속된 사용자 경험 만으로 소프트웨어 엔지니어가 일하는 과정을 자연스럽게 학습될 수 있게 만들고자 했습니다.

통합 계정 관리: 너의 이름은

기존에는 내부 업무관리 시스템과 보안 설루션에서 각 시스템별로 독립적인 계정 관리 체계를 운영했습니다. 이로 인해 다음과 같은 문제점이 발생했습니다.

  • 반복적인 수동 작업: 각기 다른 계정 시스템으로 인해 관리자들이 단순 업무를 반복 수행
  • 비효율적인 인증/권한 관리: 외부 설루션의 결재 시스템 부족 및 복잡한 데이터 변경 방식으로 담당자의 업무 부담 가중

해결하려고 했던 것

  • 인사 시스템을 기준으로 모든 계정을 자동 연동하고 중복 계정 시스템 제거
  • 수동으로 진행하던 계정 동기화 작업을 자동화하여 관리 효율성 증대
  • 크루 누구나 계정과 권한을 확인하고 필요한 권한을 직접 요청/취득하는 주체적인 업무 프로세스 구축
  • 적절한 권한 부여 검토 과정을 위한 결재 기능 및 증적 관리 시스템 추가

얻고자 했던 것

  • 업무 효율성 극대화: 반복적인 수동 작업 감소 및 자동화를 통한 생산성 향상
  • 관리 비용 절감: 통합 시스템을 통한 관리 리소스 및 시간 절약
  • 보안 강화: 통합된 계정 및 권한 관리로 보안 취약점 감소 및 보안 수준 향상
  • 주체적인 업무 환경 조성: 크루들이 스스로 계정 및 권한을 관리하며 업무 효율성 증대

이로써 인사시스템을 기준으로 모든 계정이 자동 연동되고, 계정 및 시스템의 권한을 관리하는 서비스를 통해 직접 자신의 계정과 권한을 제어할 수 있는 시스템을 만들었고, WECAN 을 통해 크루들의 계정관리의 업무 효율성이 향상되고 사용자 중심의 권한 관리와 계정 관리의 안정성도 높일 수 있었습니다.

배포 플랫폼: 로켓단

저희는 금융업 특성상 엄격한 배포 절차를 준수해야 합니다. 기존에는 소통 채널에 수기로 배포 요청 글을 작성하고, 담당자가 이를 취합하여 처리하는 방식이었으나, 다음과 같은 문제점이 있었습니다.

기존 배포 방식의 문제점

  • 수동 작업: 배포 요청 및 처리 과정이 수동으로 이루어져 번거로움과 휴먼 에러 발생 가능성 높음
  • 증적 관리의 어려움: 수많은 배포 요청 글 속에서 승인 완료된 건들을 시간별로 취합하고 관리하는 데 어려움
  • 사용자 편의성 부족: 배포 이력 조회 등 증적 관리 측면에서 불편함 존재

이러한 문제점을 해결하고 효율적인 배포 환경을 구축하기 위해 DevOps 팀에서 로켓단 플랫폼을 개발했습니다. (로켓단의 의미는 로켓처럼 빠르고 안전하게 배포한다!라는 귀여운 의미를 내포하고 있어요..🤣)

해결하려고 했던 것

  • CI/CD 플랫폼 연동: Wallga2와 유기적으로 연동하여 배포 자동화 지원
  • 다양한 배포 옵션 지원: 배포 케이스별 다양한 옵션 대응 및 안정적인 배포 보장
  • 생산성 플랫폼 개선: 사용자 편의성 및 증적 관리 기능 강화

주요 기능들

  • 배포 통제 및 효율성 강화: 변경 사유 및 테스트 완료 증빙 자료(Service Request, Pull Request) 간편 등록
  • 긴급, 비상 상황 발생 시 증적 자료 자동 기록
  • 배포 과정 모니터링 및 시각화, 오류 발생 시 즉시 조치 가능한 상태 복구 절차 구현

얻고자 했던 것

  • 규정 준수 및 생산성 향상: 엄격한 금융 규정을 준수하면서 효율적인 배포 프로세스 구축
  • 휴먼 에러 감소: 배포 자동화 및 시스템화를 통해 휴먼 에러 발생 가능성 최소화
  • 증적 관리 강화: 배포 이력 및 관련 자료의 체계적인 관리
  • 사용자 편의성 증대: 쉽고 편리한 인터페이스 제공 및 배포 과정 시각화

로켓단은 크루들의 불편을 해소함과 동시에 규정을 준수하여 배포 업무를 효율화했으며, 단순한 편의 서비스가 아닌 생산성 플랫폼이 만들어 나가고자 하는 소프트웨어 생명과정의 중심이 되는 서비스입니다.
이어서 소개해 드릴 CatalogDeveloper Desk라는 서비스와의 연동을 통해, 크루들의 개발업무 과정에서 생성되는 데이터들이 어떻게 순환되는지 보여드리고자 합니다.

모든 서비스 자원의 데이터 가시화: Catalog

1. Catalog

Catalog는 모든 서비스 연관 자원을 확인할 수 있는 일종의 내부 개발자 포털(Internal Developer Portal) 서비스입니다.

내부 개발자 포털은 주로 정보와 리소스에 대한 접근을 지원하며, 문서화 및 협업에 중점을 둡니다.
내부 개발자 플랫폼은 소프트웨어 개발 및 배포의 전반적인 프로세스를 자동화하고 최적화하는데 초점을 맞추고 있습니다.

모든 프로젝트 정보를 담고 있는 통합 관리 시스템으로 크게 두 가지 영역으로 구성됩니다.

  • Catalog: 소스 코드와 인프라 연동 정보 등 프로젝트의 전반적인 구성 요소를 관리
  • Platform Catalog: 데이터베이스, 컨테이너, 캐시, 로드밸런서 등 사내의 모든 인프라 현황을 체계적으로 관리

운영 측면에서 보면, Platform Catalog의 초기 설정을 제외한 모든 정보는 자동으로 생성되고 관리됩니다. 개발자가 작성한 코드는 내부 배포 플랫폼에서 검증과 빌드 과정을 거친 후, 그 결과를 바탕으로 Catalog 데이터가 자동으로 생성되며 지속적으로 최신 상태로 유지됩니다.
이러한 Catalog 시스템의 가장 큰 장점은 다음과 같습니다.

  • 신규 프로젝트에 필요한 인프라를 Platform Catalog를 통해 쉽게 요청하고 관리할 수 있습니다
  • 향후 필요한 인프라의 자동 생성까지 지원할 예정입니다
  • 모든 개발 활동 정보를 자동으로 수집하여 가시화합니다

이처럼 Catalog는 개발 프로세스의 효율화와 표준화를 위한 도구로 사용되고 있습니다.

2. Developer Desk

서비스 출시를 위해서는 다양한 인프라 환경 설정과 빌드/배포 환경 구축이 필요합니다. 하지만 운영환경의 시스템들이 여러 조직에 의해 분산 관리되어, 필요한 리소스마다 각각의 담당자와 개별적으로 소통해야 했습니다.
Developer Desk는 이러한 다양한 업무 채널과 협업 도구들을 하나의 창구로 통합하여 효율적인 소통을 지원하고자 시작되었습니다.

Catalog와 연동하여 프로젝트 정보를 자동으로 가져오고, 미리 정의된 인프라 리소스 템플릿을 통해 요청서 작성을 간소화했습니다. 작성된 요청서는 사내 업무요청 채널로 자동 등록되어 담당자들과 효율적인 소통이 가능해졌습니다.
이를 통해 업무 요청자들의 불편함이 줄어들었고, 프로젝트별 요청 정보를 체계적으로 관리하고 재활용할 수 있게 되었습니다.
이처럼 WECANCatalogDeveloper Desk의 데이터를 상호 연계하고 자동화하여 개발 생산성을 지속적으로 향상하고 있습니다.

Catalog + CI/CD 플랫폼 연결

로켓단은 앞서 구축한 서비스들에서 생성되는 정보를 활용하여 자동화를 구축하여 업무를 효율화하였습니다.
Catalog 정보를 통해 배포 대상에 대한 각종 정보들을 자동으로 등록하도록 하여, 사용자는 클릭 동작만으로 원하는 요청서의 내용을 등록하고, 재사용할 수도 있도록 하였습니다.
Catalog에 있는 배포 파이프라인2 연동 정보를 바탕으로 배포를 진행하게 되며, 진행 과정 중에서 수집되는 정보는 다시 Catalog에 적재함으로써 이후 배포에 다시 활용하고 있습니다.

또한, DevOps 팀에서 만든 닥터 핌이라는 서비스를 로켓단에서 활용하고 있습니다.
닥터 핌은 K8S 클러스터의 각 노드들이 사용하는 리소스를 측정하여, 적절한 CPU와 메모리 설정을 안내해 주는 서비스입니다.
이를 통해 자원 낭비를 막을 수 있음을 물론이고, 특정 패턴이 있는 시스템 부하의 경우라면 리소스 부족으로 인한 장애를 사전에 방지할 수 있습니다.

이처럼 로켓단은 생산성 플랫폼 내에서 생산되는 여러 정보들과 유기적으로 연동하여, 금융업에서 지켜야 하는 규정을 준수하는 동시에 배포 업무 효율화를 이끌어 내고 있습니다.

엔지니어링 생산성을 위해서

지속적인 플랫폼과의 연결

앞서 소개한 서비스들은 내부 개발자 플랫폼의 핵심 구성 요소입니다.
내부 개발자 플랫폼은 개발자들이 소프트웨어를 더 쉽고 빠르게 개발하고 배포할 수 있도록 돕는 통합 개발 환경을 의미합니다.
우리는 여기서 한 걸음 더 나아가, 생산성을 핵심 가치로 삼아 회사의 모든 리소스와 플랫폼을 하나로 통합하는 생산성 플랫폼을 구축하고 있습니다.

이 플랫폼에는 앞서 소개한 서비스 외에도 다양한 기능이 포함되어 있습니다. DevOps 팀이 운영하는 이벤트 모니터링 시스템과 인프라 통합 인증 시스템, 로드밸런서 정보 조회 서비스, 가상 Mock API 서버 생성 도구 등 업무 효율을 높이는 여러 서비스와 플랫폼 관리 도구를 제공하고 있죠.
더불어 WECAN 내에서 사내 대화형 AI 툴을 시험적으로 운영하고, 일감 기반의 계획 및 지연 현황을 차트로 시각화하는 등 혁신적인 기능을 테스트하는 실험의 장으로도 활용되고 있습니다.

생산성 지표 가시화

저희가 만들어가고 있는 생산성 플랫폼 WECAN은 단순한 업무 도구 그 이상의 가치를 지향합니다. 업무 효율화 서비스는 물론, 크루들의 활동을 데이터로 변환해 표면적으로 보이지 않는 비효율까지 찾아내는 종합적인 생산성 측정 시스템을 제공합니다.
개발 운영 분야의 생산성 측정에서 DORA Metrics3는 변경 리드 타임, 서비스 복원 시간, 배포 빈도, 변경 실패율, 안정성을 평가하는 핵심 지표입니다.
우리 플랫폼은 이러한 지표를 단순 평가 도구로 보는 대신, 구성원의 활동이 조직과 개인의 성장을 위한 것이라는 원칙 하에 시스템 개선을 목표로 합니다.
우리는 기술과 플랫폼으로 비효율을 해결하고, 지속적인 최적화를 통해 진정한 생산성 향상을 이룹니다.

WECAN의 이슈 차트는 Jira와 GitHub의 데이터를 하나로 모아 업무 현황을 한눈에 보여주는 서비스입니다. 프로젝트의 진행 상태와 계획 대비 실제 성과를 차트로 시각화하여, 복잡한 프로젝트 현황을 쉽게 파악할 수 있도록 만들었습니다.
하지만 아쉽게도 데이터 시각화 그 자체는 의미 있었으나, 이 정보를 실제 업무에서 어떻게 활용할 수 있는지에 대한 실용적인 가이드가 부족했습니다. 결국 서비스가 가진 실질적인 가치를 사용자들에게 제대로 전달하지 못해 활성화되지 못하는 한계에 부딪혔습니다.

이슈 차트의 경험을 토대로, WECAN의 메인화면에 개인별 일감 현황을 간단히 보여주는 섹션을 새롭게 구성했습니다.
이는 무리하게 사용성을 강요하기보다, 개인과 직접 연관된 데이터를 제공함으로써 지표에 대한 자연스러운 친밀감을 형성하기 위한 첫걸음입니다.

그리고 이제는 WECAN 초기와 달리, 다양한 내부 서비스를 통해 풍부한 데이터를 확보할 수 있게 되었습니다.

  • 너의 이름은: 사용자 계정 데이터
  • 너의 권한은: 시스템 접근 권한 정보
  • Catalog: 사내 산출물 생성 및 연동 현황
  • Developer Desk: 인프라 환경 데이터
  • 로켓단: 배포 현황 및 컨테이너 리소스 정보

이처럼 업무 전반을 아우르는 서비스들을 플랫폼 내에 통합함으로써, 생산성 측정을 위한 탄탄한 기반을 마련했습니다.
우리의 생산성 플랫폼은 단순한 업무 효율화를 넘어, 이러한 풍부한 경험과 데이터를 활용하여 측정 가능한 지표를 통해 실질적인 생산성 향상을 실현하는 것을 목표로 합니다.

개발자에게 유익한 정보를 제공

생산성 플랫폼 WECAN은 생산성 효율화를 위해 내부 개발자 플랫폼에 생산성이라는 키워드를 더해 만들어가고 있는 플랫폼입니다.
비효율을 효율로 바꿔나가는 다양한 서비스와 도구들이 모여 있으며, 하루 업무의 시작과 끝을 함께하는 업무 포털로서의 기능도 기대하고 있습니다.

WECAN의 메인화면에는 하루 업무를 시작하며 확인해야 할 정보들이 차곡차곡 쌓이고 있습니다.
여기저기 분산되어 있지만 개발자라면 꼭 확인해야 할 정보를 한 곳에서 확인할 수 있도록 구성하였습니다.
저희는 WECAN을 단순히 권한을 획득하고 배포를 진행하는 등 필요에 의해서만 사용되는 플랫폼이 아니라, 업무의 시작부터 끝까지 작은 요소에서도 생산성 효율화를 이끌어 내고자 합니다.

마치며

1년여의 짧은 기간이었지만 엔지니어링 플랫폼 관점에서 진행된 효율화를 통해, 각각의 서비스에서 만들어지는 데이터들을 활용하여 다른 서비스의 사용성을 개선하는 선순환 과정을 만들어낼 수 있었습니다.
처음 시작했을 때와 비교하면, 이제야 겨우 플랫폼이라는 명칭이 어울리게 구색을 맞춘 것 같다는 생각이 듭니다.

생산성과 지표, 그리고 효율화.

이러한 용어들은 조직 운영에서 흔히 사용되지만, 실제 엔지니어링 현장이나 개발 문화에서는 추상적이거나 언급하기 조심스러운 주제가 되곤 합니다.
코드의 정적분석이나 리팩토링은 개개인의 차원에서 시도할 수 있는 반면, 생산성 지표 측정과 업무 효율화는 다양한 시스템과 이해관계자, 그리고 많은 구성원들이 연관되어 있어 조직 차원의 접근이 필요한 과제입니다.
특히 생산성 지표 수집이라는 과제를 안고 있는 우리 팀조차도 정량적인 성과 측정에 어려움을 겪고 있는 것이 현실입니다.
이러한 도전과제들을 해결하기 위해서는 점진적인 접근과 함께 조직 구성원들의 공감대 형성이 우선되어야 할 것이기에, 앞으로도 지속적인 시도와 개선을 통해 더 나은 방향을 모색해 나가도록 하겠습니다.

감사합니다!

참고 자료

Footnotes

  1. backstage - An open source framework for building developer portals

  2. CI/CD Platform - Wallga 2

  3. DORA’s software delivery metrics: the four keys

vito.kim
vito.kim

은하수 별빛처럼 쏟아지는 일감들을 잘 받아낼 수 있는 방법에 대해 고민하다가 생산성플랫폼을 만들고 있는 카카오페이증권의 비토입니다.

taki.haru
taki.haru

카카오페이증권에서 생산성플랫폼을 만들고 있는 타키입니다.

ian.curtis
ian.curtis

카카오페이증권에서 생산성플랫폼을 만들고 있는 이안입니다. WECAN!!