BESS(Back-End Study Space)
제 4회 오픈 인프라 개발 경진 대회(OIDC) 참가 후기 본문
제 4회 오픈인프라개발경진대회(OIDC)
소프트웨어 마에스트로 12기 수료 후, AWS SAA 자격증 취득과 함께 클라우드에 대한 관심이 더욱 높아지면서 수료생들을 포함한 지인과 함께 4인이 팀을 이루어 '제 4회 오픈 인프라 개발 경진대회'에 참가하게 되었습니다👏
서류 심사 → 본선 진출 → 중간 발표 → 결선 진출🎊 까지 열심히 함께 개발한 팀원들에게 모두 감사 인사드립니다🙇♀️
🚀 서비스 소개 kubeform(팀 Kube:Form)
kubeform은 Kubenetes와 Terraform의 합성어입니다. kubeform을 개발하게 된 목적과 필요성, 그리고 서비스에 대해서 소개하겠습니다💁🏻♀️
[다수의 기업들이 채택하고 있는 쿠버네티스]
최근 쿠버네티스의 활용성과 중요성이 중대함에 따라 많은 기업들이 쿠버네티스를 이용한 MSA에 힘을 쓰고 있습니다. 쿠버네티스는 여러 컨테이너에 걸쳐 애플리케이션 서비스를 구축하고 클러스터 전체에서 여러 컨테이너를 확장하여 컨테이너의 상태를 지속적으로 관리할 수 있는 컨테이너 오케스트레이션 툴입니다. 특히 클라우드 환경에서 다수의 컨테이너들을 예약하거나 실행할 수 있는 환경을 유연하게 관리할 수 있습니다.
[스타트업들의 기술부채로 작용되고 있는 쿠버네티스]
스타트업의 성장세에 따른 기술 변천 과정은 일반적으로 다음과 같이 정리할 수 있습니다. 초기에는 클라우드 컨테이너 관리 서비스를 이용하다가 점차 여러개의 컨테이너를 관리하고 조율할 필요성이 생기면서 쿠버네티스를 찾습니다. 다만, 빠른 개발과 배포가 중요한 스타트업에서는 쿠버네티스로 마이그레이션을 하는 것에 인력 모집의 문제점과 기술의 러닝 커브로 인해 어려움을 겪고 있습니다.
[kubeform : 쿠버네티스 초기 구축을 쉽게 도와주는 솔루션]
kubeform 서비스는 초기 스타트업이 작업하는 컨테이너 환경을 간단하게 등록만하고 Drag&Drop으로 이동만 한다면 간단하게 쿠버네티스 클러스터 환경을 구축할 수 있습니다. 커다란 기술부채를 줄이고, 초기 인력으로 빠른 개발과 배포가 필요한 현 스타트업 체계에 적합합니다.
🚀 서비스 아키텍처 Service Architecture
kubeform은 AWS 클라우드 인프라를 사용하여 아키텍처가 설계되었습니다.
주요기능을 수행하는 AWS Lambda와 서버리스 형태의 Key-Value DB인 DynamoDB를 사용해 동시성에 대한 프로비저닝이 가능하여 동시접속 유저의 폭발적인 증가량을 대응할 수 있고 그에 비해 요금은 사용한 만큼 청구되어 경제적입니다. 여러 개의 Lambda 함수로 구성된 아키텍처는 사용자의 클러스터 정보를 메시지화 하여 SQS로 전달하고, Flask 서버에서는 주기적인 폴링을 통해 사용자의 인프라 클러스터링을 수행합니다.
사용자에게 제작해주는 EKS 쿠버네티스 환경은 크게 2가지 절차로 진행됩니다.
1. Terraform으로 사용자의 클라우드 환경에서 여러 개의 AWS 인프라를 생성
2. EKS에 kubectl으로 접속해 사용자가 정의한 클러스터 구조를 디플로이먼트화 하여 적용
🚀 사용한 기술 스택
1. WEB Console
사용자가 등록한 IAM, docker image로부터 기본 정보를 입력받고 Drag&Drop으로 구성한 클러스터 다이어그램을 서버에 전달하는 역할을 합니다. 또 인그레스 컨트롤러 진입점, 네트워크와 오버뷰 탭들을 제공해 사용자가 필요한 정보를 편리하게 보여줍니다.
2. AWS Cloud
웹으로부터 전달받은 IAM 시크릿 키들을 보안화 후 저장하고, 유저가 생성하고 있는 클러스터의 생성 상태를 확인하는 Lambda함수들을 지니고 있습니다. S3로부터 trigger되는 Lambda함수를 비롯하여 서버에서 처리해야 하는 로직들을 전체적으로 총괄하는 미들웨어 역할을 수행합니다.
3. Server
미들웨어(AWS Cloud Infra)로부터 제공받은 사용자의 클러스터 정보를 Terraform과 kubelet으로 자동으로 생성하는 로직을 실행시키는 Flask서버로 구성되어 있습니다.
[적용 기술]
1. React 프레임워크를 활용한 웹 콘솔 GUI 개발
2. AWS Lambda, ApiGateway, DynamoDB를 통한 서버리스 아키텍처 설계 및 개발
3. Terraform을 사용한 EKS 클라우드 환경 프로비저닝 기술
4. Flask를 사용한 쉘 스크립트 자동화 기술
🚀 프로젝트 과정
매주 목요일 7시를 회의 시간으로 잡고 주간 스크럼 및 개발 프로세스 과정을 공유하였습니다. 정리해야하는 문서는 Notion을 사용하여 함께 작성하였고, 개발하면서 생긴 이슈는 Github issue와 project의 kanban board를 활용하며 issue 해결 진행도를 관리하였습니다.
🚀 네이버 클라우드 플랫폼(NCP)
주최 측에서는 100만원 가량의 크레딧을 지원해주었습니다👍 저는 졸업 프로젝트를 진행하면서 Naver Cloud를 써본 경험이 있습니다. 그 당시에도 Naver Cloud 90일 무료 크레딧을 받아 Backend 서비스를 위해 Object Storage, Naver Clova 등을 사용하였습니다.
무엇보다 NCP의 장점은.. 처음 사용해보는 사람도 쉽게 활용할 수 있도록 도와주는 쉽고 친절한 설명 이라고 생각합니다. 읽었을 때 따라하기 쉬운 Document 구성과 이해하기 쉬운 설명이 개발자들을 더욱 NCP를 잘 이용할 수 있도록 유도하는 것 같습니다.
Kube:Form은 단계를 거치며 서비스를 확장시켜 나가고자 합니다. 팀원들이 모두 AWS에 익숙하여 이번 대회는 AWS 인프라를 사용한 단계까지 진행되었지만, 추후 NCP를 도입하여 고도화할 예정입니다.
끝으로 좋은 추억 만들어주신 OIDC 주최자분들께 감사드립니다🙇🏻♀️