당근 마켓 서비스 배포 시스템
배포 매니페스트를 받아서 템플릿이 K8S에서 잘 맞게 배포 되도록 하는것
배포에 대한 진입 장벽을 낮추기 위해 아래 것을 만듦.
당근 마켓 개발자들이 몰라도 당근 마켓에 배포 할수 있도록 설정된 API라고 봐도 된다고 하네요.
쿠베 만의 배포 절차 및 인터페이스가 있는데 왜 따로 만들었을까요?
쿠베가 아래와 같이 복잡한 리소스를 가지고 있어 굉장히 복잡한 시스템입니다.
쿠베가 익숙치 않은 개발자에게는 굉장한 진입 장벽임. 기본적으로는 쿠베의 모든 기본적인 정보를 잘 알아야 쓸수 있으므로
개발자가 쿠베에 대한 모든 내용을 알아야 하는 상황입니다.
하여 당근 개발자들의 진입 장벽을 낮추기 위해 당근만을 위한 배포 인터페이스를 별도로 만듦
아래와 같이 여러가지 툴들이 있으므로 팀별/프로젝트에 따라 다양한 요구에 따라 달리 사용되고 요구도 많이 틀릴수 있어
배포 템플릿도 최소한의 배포를 할수 있도록 배포를 할수 있도록 만듦
Helm의 경우 선언적 언어를 정의 해야 하므로 글로벌 전개 및 빠른 요구의 변화로 템플릿이 계속 바뀌어야 하는데
조건절 및 빠른 피드백 사이클 위함 및 유지보수성을 고려하면 장기적으로 가져가려면 힘들것으로 예상 되었음.
배포를 위해서 야물을 사용하게 되는데 cdk8s는 접근 방법이 완전히 다름.
아래와 같이 야물이 아닌 완전히 프로그램 언어로 쿠버네티스 서비스 명세를 아래와 같은 형태로 구성을 할수 있는 프레임워크 입니다.
아래는 Type Script로 명세를 구성해준 예제 입니다.
그래서 Helm 과 같이 선언적 정의언어 보다는 잠정이 많습니다.
-> 프로그래머 입장에서는 이게 쓰기 편할수 있겠네요.
cdk8s는 AWS팀이 2020년 발표를 통해서 처음 공개 하고 CNCF 샌드 박스 프로젝트로 기부된 프로젝트이고 cdk8s 팀이 별도로관리하고 있는 오픈 소스 입니다.
데모 영상 플레이가 안되어 넘어갔습니다.
VSCode와 같은 IDE 툴 사용가능
프로그램밍 형태여서 조건절 사용가능한 부분에 메리트가 감.
2021년 9월 기준 지원 언어는 아래와 같고 당근마켓은 타입스크립트를 사용함
동적 언어 특성과 정적언어 특성을 동시에 가지고 있기 때문에 메리트가 있다고 보았고
배포 플랫폼이 컨프롤 자체가 주요 기반이 Node를 사용하고 있었기 때문에 라이브러리들을 git hub에서 사용가능할것으로 보여
최종 선택하게 됨.
cdk8s 의 장점은 아래와 같이 파악 되었습니다.
cdk8s 사용시 팁들 - Yamul 사용시에 비해 복잡도가 남아 지지는 않음.
리소스들을 쪼개는 과정을 몇가지 기준을 가지고 쪼개면 익술하게 쉽게 리소스를 좀더 편하게 관리 할수 있었습니다.
그래서 같은 관심사를 가지는 리소스를 아래와 같이 묶어서 분류 하였는데요.
1. 워크로드 - 디플로이먼트, 서비스
2. 서비스 모니터 - 프로메테우스
3. 서비스 트래픽 핸들링 - istio, 버추얼 모니터등
자주 변경 - 배포 되는 리젼 , 배포 되는 환경 , 빌드된 이미지 태그 , 어플리케이션 템플릿 등을 인자값으로 받음.
변경이 안되는 부분 - 컨프롤러에서 입력하는 인자들
알파 환경이나 프로덕션환경에 똑같은 값으로 자주 변경되지 않는 인자는 아래와 같이 분류 해본겁니다.
cdk8s 에서도 유효성 검사를 빠르게 할때 배포 인자 유효성이 안맞는 부분을 빠르게 실패해서 피드백 사이클을 단축 시키는 효과를 볼수 있어서 자주 변경되는 인자와 자주 변경되지 않는 인자를 가져 간다면 유효성 하는 검사에 넣어서 관리하여 활용성을 높일수 있을것 같습니다.
배포 자동화에 대한 많은 고민과 노력을 넣고 유효성 검사등 팁들을 운영에서 개발 하여 선순환 반영하여서
배포 시간 단축 배포 적응시간 단축 , 개발 편의성 확보, 배포시 자주 발생하는 실수 사전 방지등
멋진 모습들이 많이 보이네요. 멋지다는 생각이 들었습니다.
'프로그래머' 카테고리의 다른 글
Window 11 설치하기 ( my MacBook Pro M1 process ) (0) | 2022.02.23 |
---|---|
6. [Android Studio]Flutter 테스트 소스를 안드로이드폰/iPhone에 배포하기 (0) | 2022.02.22 |
[당근마켓]당근 SRE 밋업 1회 - 6개월 간의 인프라 구축 이야기 (0) | 2022.01.27 |
[당근마켓]당근 SRE 밋업 2회 - 쿠버네티스 멀티 클러스터에서 Addons 관리 (0) | 2022.01.27 |
[당근마켓]당근 SRE 밋업 2회 - 배포시스템 유투브 영상 (0) | 2022.01.27 |