2024 공개SW개발자대회 1차 평가에 합격했다.
메가존 클라우드 기업형 과제로 지원했으며, 팀원은 프론트엔드 1명, 서버/인프라 3명으로 구성했다.
기업형 과제는 주제가 크게 3개 있었고, 정해져 있음에도 불구하고 결정하기까지 많은 고민을 했다.
최종적으로 선택한 주제는 “DevOps 관리 기능 구현 - DevOps Toolchain 연동 개발(ex. GitHub Actions, GitLab, Argo CD, Jenkins 등)”로 초기 기획은 SpaceONE에서 CI/CD 구축을 ‘딸깍’ ‘딸깍’으로 가능하게끔 하도록 하는 것이 목표였다.
SpaceONE은 리눅스 재단에 등재된 오픈소스 기반 멀티 클라우드 플랫폼으로 AWS, GCP, Azure 등 다양한 클라우드를 연동하여 통합 관리한다.
이 때 필요한 리소스를 AWS나 GCP, Azure 등 이미 연동되어 있는 클라우드 서비스들에서 가져와 사용하게 하는 것까지 구상을 했다.
우선 SpaceONE의 Github Organization인 cloudforet을 살펴봤다.
프로젝트를 처음 시작할 때만 해도 repository의 개수는 118개 정도였던 거 같은데 한두달만에 123개가 되었다.
맨땅에 헤딩한다는 표현이 맞았다. Cloudforet organization에 들어가서 무작정 코드 분석…을 하기 전에 먼저 cloudforet이 어떤 아키텍처로 구성되어 있는지 Document를 정독했다.
초반에는 Cloudforet의 아키텍처를 이해하는 데 많은 시간을 쏟았고, 문서화가 미흡한 부분이 많아 혼란도 있었다.
이 프로젝트를 진행하면서 처음 가입 시 주는 GCP 웰컴 크레딧 40만원을 포함하여 55만원 가까이 썼다. (팀원과 내 계정으로 cloudforet dev 서버와 테스트용 jenkins 서버를 따로 열었다.)
cloudforet의 구조를 보면.. 학부생의 잣대로 판단하기에 MSA의 끝판왕처럼 보였다. 지금까지 해본 프로젝트 중에서 가장 난이도가 높았다.
백엔드는 파이썬 언어를 사용하는데, 프레임워크가 장고가 아니라 자체 제작 Cloudforet 프레임워크였다.
이 아키텍처에서는 굉장히 배울 것이 많았다.
쿠버네티스로 컨테이너 오케스트레이션을 하며 각각의 마이크로서비스는 파드로 구성되어 있었다.
gRPC를 각 마이크로서비스 간 통신 프로토콜로 사용하였으며, 프로토버프(protobuf)를 인터페이스 정의 언어로 사용했다.
Service-Resource-Verb 패턴을 적용해서 서비스(Service)는 비즈니스 로직, 자원(Resource)은 엔티티, 동사(Verb)는 자원에 수행하는 작업으로 gRPC 메서드(get, create, delete, update, list 등)로 나타난다.
이후에 어느정도 아키텍처나 데이터 플로우를 이해하니 코드가 읽히기 시작했고, 개발에 필요한 부분이 어디인지 알게 되었다.
그런데 코드를 짜고 테스트는 어떻게 해야할지가 의문이었다.
이 과정에서 어려움이 많았지만, Discord에서 cloudforet 커뮤니티에 참여하고, Github 이슈를 올리며 질문하고, 관련 담당자에게 메일을 보내며 문제를 해결해 나갔다.
결국 github/jenkins collector 플러그인을 개발하여 1차 평가에서 합격할 수 있었다.
'project > 2024 공개SW 개발자대회' 카테고리의 다른 글
2024 공개SW 개발자대회 복기3 - 프로젝트 마무리 (0) | 2024.11.15 |
---|---|
2024 공개SW 개발자대회 복기2 - 플러그인 개발기 (0) | 2024.11.14 |
2024 공개SW 개발자대회 복기1 - 개발 환경 구축기 (0) | 2024.11.13 |