grep

Engineering

NHN Cloud Plugin 개발기 | Cloudforet 오픈소스 프로젝트 후기

NHN

2024년 10월 7일

원문에서 보기 ↗

foret_main.png

세계 최대 벤더 중립 오픈소스 커뮤니티 Linux Foundation 멘토십 프로그램으로 2024년 6월~8월 진행된 [Cloudforet NHN Cloud Plugin 개발 오픈소스 프로젝트] 멘티 학생들로부터 기고 받은 글입니다.

H4_550.png 안녕하세요. 홍익대학교 컴퓨터공학과에 재학 중인 백준호, 송인서, 윤강현입니다. 저희는 Linux Foundation 멘토십 프로그램을 통해 오픈소스 프로젝트 Cloudforet NHN Cloud Plugin 개발을 함께 수행하였습니다.

저희가 한국교육정보화재단에서 인턴십을 하고 있던 당시 기술 팀장님께서 해당 프로젝트에 참여할 것을 제안해 주셨습니다. Cloudforet는 팀장님께서 메인테이너로 계시는 오픈소스 프로젝트였고, 저희는 오픈소스 프로젝트를 경험해 보고, 이를 통해 성장할 수 있다는 기대감을 가지고 기쁘게 프로젝트에 참여하게 되었습니다.

Cloudforet란?

cloudforet_ecosystem.jpeg Cloudforet는 다양한 CSP(cloud service provider)의 클라우드 자원들을 하나의 플랫폼에서 관리할 수 있는 오픈소스 프로젝트입니다. 다양한 클라우드 자원의 정보를 플러그인 형태의 자원 수집 API 서버가 수집하여 Cloudforet 대시보드에서 확인하고 관리할 수 있습니다.

Cloudforet NHN Cloud Plugin 구조

foret_img_001.png 대략적인 구조는 위와 같습니다. 작업 큐에 정보 수집 요청이 들어오면 Inventory-Worker 마이크로서비스가 저희가 개발할 플러그인에 정보 수집을 요청합니다. 요청을 받은 플러그인은 NHN Cloud API를 이용해 클라우드 자원 정보를 수집하는 형태로 되어 있습니다. 저희는 여기서 NHN Cloud의 API를 이용해 NHN Cloud의 클라우드 자원 정보를 수집하는 Python API 서버 개발을 수행하였습니다.

NHN Cloud 리소스 파악

클라우드 자원을 수집하고 관리하기 위해서 우선 NHN Cloud에서 제공하는 클라우드 서비스를 이해하는 것이 필요하였습니다. NHN Cloud 공식 문서를 보며 어떤 클라우드 서비스가 있는지, 클라우드 자원 정보를 가져올 수 있는 API가 있는지 파악하였습니다. cf_2.png NHN Cloud는 100개가 넘는 클라우드 서비스를 사용자에게 제공하고 있습니다. 많은 서비스 중 자원 정보를 제공하는 API가 있는지를 파악하여 총 64개의 서비스를 Cloudforet 플러그인에서 제공하기로 결정하였습니다.

IaaS, PaaS API 인증

NHN Cloud API는 크게 두 가지 인증 방식을 가지고 있습니다. IaaS(infrastructure as a service) 클라우드 자원 정보 요청을 위한 토큰 방식의 인증과 PaaS(platform as a service) 클라우드 자원 정보 요청을 위한 앱키 기반의 인증 방식입니다. 정보 요청 API를 사용할 때에 위와 같은 두 가지 유형의 인증 방식에 유의하여 API 요청을 보내야 합니다. cf_3.png API 서버 내부적으로는 두 가지 값을 가지는 enum 클래스로 구현하여 구분하였습니다.

플러그인 사용자를 위한 가이드 작성

NHN Cloud 클라우드 자원을 Cloudforet를 이용해 관리하고자 하는 사용자가 쉽게 환경을 구성하고 사용할 수 있도록 하기 위해서는 자세한 문서화가 중요하다고 생각하였습니다. 한국 사용자를 위한 한글 가이드와 글로벌 사용자를 위한 영문 가이드를 모두 제작하여 NHN Cloud 콘솔 내 인증 키 발급 방법부터 클라우드 자원 수집 방법까지 쉽게 따라할 수 있도록 하였습니다. cf_4.png

🔎 Korean Guide 바로 가기 🔎 English Guide 바로 가기

프로젝트 진행 방식

오픈소스 특성상 메인테이너와 실시간 소통을 진행하며 개발하기는 불가능하였습니다. 따라서 개발-피드백-개선 사이클을 반복적으로 수행할 수는 없었습니다. 자신의 작업 내용을 한눈에 파악 가능한 칸반 보드를 이용하여 프로젝트 작업을 관리하였고 주 단위의 팀 내 미팅을 통해서 개발하며 생긴 이슈와 논의를 진행하였습니다. cf_5.png 추가적으로 이해가 필요한 부분은 Cloudforet 디스코드 채널을 이용해 메인테이너와 소통하며 진행하였습니다. cf_6.png

결과

cf_7.png NHN Cloud의 클라우드 자원을 Cloudforet 대시보드에서 관리할 수 있게 되었습니다. 총 64개의 서비스를 지원하고 있으며 NHN Cloud API가 고도화됨에 따라서 더욱 지원하는 리소스가 늘어날 것입니다. Cloudforet 메인테이너의 검토가 진행된 후 최종적으로 공식 지원하는 플러그인으로 등록될 예정입니다.

cf_8.png 또한 개발을 완료한 뒤 NHN Cloud 마케팅, 개발팀 분들과 Cloudforet 메인테이너가 계신 자리에서 개발 후기와 개선점에 대한 발표를 진행하였습니다. Cloudforet와 NHN Cloud 서비스를 활발히 이용하며 느낀 개선점과 후기를 전달하였고 이를 통해 오픈소스 프로젝트의 발전과 NHN Cloud 서비스 사용자 입장의 VoC(voice of the customer)를 제공할 수 있었습니다.

사용자를 위한 핸즈온 아티클

Cloudforet를 처음 사용하는 클라우드 관리자나 NHN Cloud 클라우드 자원을 Cloudforet에서 관리하고자 하는 사람들이 쉽게 구축할 수 있도록 돕기 위해 Cloudforet 초기 구성 방법과 자원 수집에 대한 핸즈온 아티클을 작성하였습니다. 핸즈온 아티클을 보고 쉽게 Cloudforet 구축과 클라우드 자원 관리를 할 수 있기를 바랍니다.

아티클작성자
멀티 클라우드 매니지먼트 플랫폼, Cloudforet 설치하기 Cloudforet를 이용해 클라우드 리소스 관리하기 (feat. NHN Cloud)백준호
[NHN Cloud Plugin 개발기] #3 연습에서 실전으로 (Provider, Schema)송인서
Cloudforet에 NHN Cloud Plugin 개발하기윤강현

후기

cf_9.png 백준호 🔗 "Cloudforet 오픈소스 프로젝트를 통해서 오픈소스 생태계에 처음 기여할 수 있어서 기쁩니다. 앞으로도 Cloudforet NHN Cloud Plugin 리포지터리의 오너로서 서비스를 발전시키고 관리하겠습니다. 오픈소스 컨트리뷰션 기회를 주신 Cloudforet 메인테이너와 기술 지원을 해 주신 NHN Cloud 개발팀 분들에게 감사드립니다."

cf_10.png 송인서 🔗 "실제로 필요한 기능을 오픈소스에 기여하면서 직접 개발하니 정말 뿌듯한 경험이었습니다. 두 달 동안 무언가에 온전히 집중해 본 적이 없었는데, 이번 기회를 통해 알차게 배우고 성장할 수 있었습니다. 멘티들과 함께 처음부터 끝까지 기획하고 구현한 NHN Cloud의 자원 수집 플러그인을 컨트리뷰트한 경험은 정말 뜻깊었고, 이제 이 플러그인을 통해 NHN Cloud 사용자들이 자원을 손쉽게 수집하시면 됩니다!"

cf_11.png 윤강현 🔗 "실제 NHN Cloud 사용자들이 이 플러그인을 통해 자원을 손쉽게 수집하고 관리할 수 있다는 점에서 큰 보람을 느끼는 프로젝트였습니다. 또한, 복잡한 데이터 구조를 효율적으로 변환하고 처리하는 작업을 직접 경험하며, 클라우드 인프라에 대해 더 깊이 이해할 수 있는 좋은 경험이었습니다."