메가존 클라우드 데브옵스 인턴 후기

안녕하세요. 이번에 메가존 클라우드의 클라우드 원 팀에서 데브옵스 인턴으로 근무를 하게되었던 박진수입니다. 너무 좋은 팀원들과 많은 경험을 하며 단시간에 성장할 수 있었고, 일하는 동안 매 순간 순간이 너무 행복했었기에 이렇게 인턴 후기를 작성해봅니다. 한 학기를 쉬고 2020.04.13~2020.08.31 까지 인턴으로 근무 했고, 다시 2020-2학기부터는 학교 복학을 하게되었습니다. 기술적인 얘기는 이곳 저곳에 많으니 항상 제가 가장 중요시하는 “느낀 점” 과 “배운 점” 을 위주로 적어보겠습니다!! 글은 위의 목록의 순서로 진행해보겠습니다. 지원동기 저는 AWS와 배포에 관해 흥미가 있어 종종 AWSKRUG 라는 그룹의 소모임에 가서 핸즈온이나 세미나에 참여하곤 했는데요. 그곳에서 저희 팀원들을 만나게 되었고, 그것이 인연이 되어 채용으로까지 이어질 수 있었습니다. ...

9월 4, 2020 · 3 분

1. Stargate라는 인프라 구축기

Stargate라는 개발 인프라 구축기 chart by Jinsu Park 저희 팀의 개발 인프라는 위와 같습니다. 마침 제가 입사할 쯤이 기존에 존재하던 인프라를 새로운 환경으로 이전해야할 시점이었습니다. 덕분에 저는 저희 개발 환경을 처음부터 구축하고, 우리의 서비스를 배포해보고, 그 후 운영하면서 여러 경험들을 할 수 있었습니다. Terraform으로 처음 접해 본 IaC 친구: IaC가 뭔 지 알아? 써봤어? 본인: 뭐 인프라를 코드로 관리한다는 건데, 나도 몰라 ㅋㅋ 본인: 아마 너무 고급 기술이라 대학 졸업할 때 까진 못 써볼 듯? ...

9월 4, 2020 · 5 분

2. Github Action, Spinnaker을 이용한 CI/CD 파이프라인 구축기

Github Action을 사용하게 된 배경 저희 팀은 원래 CI용으로 Jenkins를 사용했습니다만 팀이 개발 중이던 서비스가 오픈소스가 목표인 프로젝트였고, Github Action이 빠르게 발전해나가면서 비용도 무료가 되었고, 좋은 Action들이 많이 생겨나고 있었기에 어느 정도 프로젝트 구조가 잡힌 뒤에는 Github의 Public Repository로 프로젝트를 관리하고 Github Action을 CI 도구로 채택하게되었습니다. Integration Test를 제외한 모든 빌드 및 일부 배포를 Github Action을 이용하게되었고, 대부분의 배포에는 사용하던대로 Spinnaker을 이용했습니다. Github Action vs Jenkins 이 부분 역시 느낀 점 위주로 요약해보겠습니다. ...

9월 4, 2020 · 3 분

3. Argo Project들에 대한 PoC(개념 증명) 진행

Argo PoC를 진행하게 된 배경 입사 초기부터 Argo에 대해 간간히 이야기를 들어왔습니다. 저희는 원래 Spinnaker을 사용했는데, 쿠버네티스 환경에 좀 더 친화적이라는 Argo를 도입해보는 것은 어떨까에 대한 얘기였는데요. 어느정도 개발 인프라 구축이 완료되고 한가해지자 잠깐이나마 Argo를 사용해볼 수 있었습니다. 결과적으로 Argo 도입은 적합하지 않다고 판단이 되었고 따라서 충분히 써볼 수는 없었기에 기록용으로만 간단히 적어보겠습니다. Argo Project 구조 Argo가 워낙 빠르게 변화하는 서비스다보니 지금은 구조가 많이 변경되었을 수도 있습니다! ...

9월 4, 2020 · 4 분

4. SpaceONE Helm Chart 개발

SpaceONE Helm Chart란? spaceone-helm 은 저희 CloudOne 팀이 개발하는 서비스인 SpaceONE을 helm chart를 이용해 패키지화하는 프로젝트입니다. 원래의 저희 환경은 MicroService들을 개별 배포하고있었지만 오픈소스로 개발되는 저희 서비스를 저희 팀원들 뿐만아니라 다른 개발자들이 쉽게 개발할 수 있고, SpaceONE을 모르던 사용자들도 쉽게 SpaceONE을 구축해볼 수 있도록 하기 위해 패키지화도 진행하게되었습니다. 일반적으로 만들어진 Helm Chart를 이용해보기만했지 직접 Chart를 만드는 것은 처음 해본 일이기도 했고, Chart를 개발하면서 새로운 환경에 저희 서비스를 배포해보다보니 삽질하며 고생도 꽤 했고, 무엇보다 프로젝트의 시작부터 퇴사 전까지의 작업들을 거의 제가 도맡아한 프로젝트였기에 개인적으로 애정이 많이 갔습니다 ^_^! 그리고 저도 이제는 저희 Chart를 이용해 SpaceONE을 구축형으로 손쉽게 이용할 수 있었습니다. ...

9월 4, 2020 · 4 분

5. SpaceONE CLI Client인 spacectl 설계 및 개발

spacectl이란? 소개 spacectl 은 저희팀이 개발하는 서비스인 SpaceONE의 gRPC API request를 CLI로 손쉽게 수행할 수 있도록 해주는 도구입니다. 파이썬을 통해 개발했고 Click 이라는 모듈로 CLI 환경을 손쉽게 사용할 수 있었고, Jinja2를 통해 상세한 Manifest 들에서 변수 치환, 분기 등을 수행할 수 있었습니다. 사용 예시 A simple example 간단하게 spacectl이 어떤 식으로 이용되는 도구인지 예시를 보여드리겠습니다. 아래의 커맨드를 이용해 손쉽게 SpaceONE의 다양한 마이크로서비스들의 API를 이용할 수 있습니다. 1 2 3 4 5 6 $ spacectl list domain domain_id | name | state | plugin_id ... domain-abc123abc | umi0410| ENABLED | ... $ spacectl list server -p domain_id=domain-abc123abc server_id | name | provider ... server-abc123abc | foo | aws ... apply command spacectl apply command는 kubectl의 apply와 유사하게 없으면 만들고, 있으면 업데이트하고 혹은 단순히 어떤 API를 Execute하는 Task들의 플로우를 관리해주는 커맨드 입니다. ...

9월 4, 2020 · 4 분