티스토리 뷰
애플리케이션 플랫폼
마이크로서비스는,
- 애플리케이션이 여러 컴포넌트로 분리
- 각기 다른 팀이 독립적으로 개발 및 배포
- 소프트웨어 개발 속도가 빨라지고 대규모 릴리스 일정을 수립하고 조율할 필요성 감소
- 각 서비스를 담당하는 팀은 독립적이며 자신의 고객(내/외부)에게 필요한 비즈니스 요건에 대응 가능
- 각기 다른 클라우드 리소스에 수평적으로 조절된 규모로 다중 배포되어 네트워크상의 다양한 프로토콜을 이용해 서로 통신
- 데이터 전송과 통신량으로 추가 비용과 레이턴시 발생 -> 사용자 경험을 저하시킬 수 있음
- 서로 독립적으로 릴리즈되지만 의도치 않게 서로 영향을 미칠 수 있음
이런 특징을 가집니다.
이렇게 분산된 시스템 관리를 위해 새로운 관행(convention), 도구, 엔지니어링 문화가 필요합니다.
플랫폼 엔지니어링 문화
1. 표준화의 필요성과 역할 분담
- 조직 내 통신 규약 및 프레임워크는 통일되고 표준화되어야 함
- 각 팀이 독자적으로 개발 스택을 관리하는 방식은 비효율적이며 중복된 노력을 유발함
- 플랫폼 팀은 표준화를 책임지고,
프로덕션 팀은 비즈니스 요구사항 개발에 집중할 수 있도록 지원
“우리가 제공하는 것은 관문이 아니라 가드레일이다.”
— 다이앤 마시, 넷플릭스 엔지니어링 도구 디렉터
2. '관문'이 아닌 '가드레일'로서의 플랫폼 팀
- 팀마다 다양한 방식을 실험하고 적용할 수 있도록 유연성 보장
- 플랫폼 팀은 개별 팀의 방식을 배우고 관찰한 뒤, 이를 조직 전체에 일반화
“시스템의 구조는 필연적으로 그 시스템을 설계하는 조직의 커뮤니케이션 구조를 닮는다.”
— 콘웨이의 법칙
- 플랫폼 엔지니어링을 잘하면 각 팀에 전문가가 따로 없어도 고품질 시스템 운영 가능
3. 전사적 도구 도입 예시: 모니터링
- 플랫폼 팀이 공통 라이브러리 형태로 모니터링 기능 제공
- 모든 서비스에 기본적인 가용성 척도가 자동 반영
- 프로덕션 팀은 자신의 영역에 특화된 지표만 추가하면 됨 (약간의 시간 소요)
4. 개발자 경험에 집중하는 플랫폼 팀의 태도
- 플랫폼 팀은 프로덕션 팀의 개발자 경험(Developer Experience)에 깊이 몰입해야 함
- 복잡한 요구사항을 제거하여 진입 장벽을 낮추는 데 많은 공감과 노력 필요
- 다양한 팀의 반복적 문제에서 패턴을 추출하고, 도구나 가드레일로 대응
- 예시) 반복되는 스크립트 실행, 바이너리 종속성 충돌, 플러그인 버전 문제, 릴리스 파이프라인 결함 등
- 도구는 기존 기능을 해치지 않아야 하며, 경고 메시지 제공만으로는 충분하지 않음
- "성공만 하면 되니까 경고는 무시하자"는 인식이 생기기 쉬움
- 플랫폼 팀은 프로덕션 팀의 시각에서 문제를 바라보고, 그들에게 익숙한 방식으로 지식을 전달하려는 노력이 필요함
5. 수정 권고 수용률과 롱테일 단계
- 시간이 지나면서 문제 패턴의 영향력은 감소하고 대부분의 팀이 권장안을 수용하게 됨
- 결국 비협조적인 일부 팀만 남는 롱테일 단계에 도달
- 이때는 해당 팀들을 직접 찾아가 1:1 협업 필요
- 적극적인 소통을 통한 신뢰 구축으로, 향후 권장안 수용률도 높일 수 있음
6. 권장안의 가시성과 플랫폼 팀의 자세
- 권장안은 쉽게 찾고 이해할 수 있어야 하며,
지속적으로 가시성을 높이기 위한 노력이 필요 - 유능한 플랫폼 팀일수록 개발자 경험에 집중하며,
그들이 혜택을 체감할 수 있도록 설계해야 함
'SRE' 카테고리의 다른 글
애플리케이션 메트릭: 미터 레지스트리 (0) | 2025.06.16 |
---|---|
애플리케이션 메트릭: 모니터링 관점과 메트릭 구조로 이해하기 (1) | 2025.06.15 |
애플리케이션 플랫폼: 전달, 트래픽 관리, 캡슐화 등 (5) | 2025.06.14 |
애플리케이션 플랫폼: 모니터링 (0) | 2025.06.13 |
자바 마이크로서비스와 함께 살펴보는 SRE 실전 적용기 (3) | 2025.06.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- spring boot jwt
- JPA
- Spring Boot Tutorial
- Linux
- @ManyToOne
- spring boot app
- Spring Data JPA
- proto3
- 스프링 부트
- 스프링 데이터 jpa
- 스프링부트
- spring boot application
- Java
- 함께 자라기 후기
- Spring Boot JPA
- 헥사고날 아키텍처
- gRPC
- leetcode
- QueryDSL
- 알고리즘
- Jackson
- r
- 클린 아키텍처
- Spring Boot
- 함께 자라기
- 스프링 부트 튜토리얼
- 스프링 부트 애플리케이션
- 스프링 부트 회원 가입
- intellij
- JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함