ExporterHub 오픈소스 프로젝트 리뷰

이예린·2020년 12월 17일
0

project

목록 보기
3/3

1. 프로젝트 소개


넥스클라우드에서 인턴기간동안 익스포터허브 오픈소스 웹 프로젝트를 맡아 진행하게 되었습니다. 넥스 클라우드는 글로벌 오픈소스 기반 클라우드 네이티브 솔루션 전문가 그룹회사로, CNCF의 회원사이며 클라우드 네이티브 모니터링 플랫폼인 NexClipper를 개발중에 있습니다.


클라우드 네이티브의 핵심 솔루션에는 쿠버네티스와 프로메테우스가 있습니다.

쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 관리해주는 오픈소스 시스템입니다.
컨테이너화 된 애플리케이션을 모니터링할 필요성이 있는데 쿠버네티스의  Metrics Server를 이용하면 매우 간단하게 애플리케이션 데이터를 수집할 수 있지만 기본적인 데이터만을 수집가능다는 단점이 있습니다.더 하이 레벨의 모니터링이 필요하다면 외부 솔루션을 사용 할 수밖에 없습니다. 그 중 많이 프로메테우스 라는 솔루션이 많이 사용됩니다.

프로메테우스는 여러가지 컴포넌트들로 이뤄져 있습니다.
프로메테우스 서버 : 시계열데이터를 수집해와서 저장하는 메인 컴포넌트입니다.
클라이언트 라이브러리 : 애플리케이션을 개발할때 프로메테우스에서 데이터를 수집할 수 해줍니다.
Pushgateway : 클라이언트에서 직접 프로메테우스쪽으로 데이터를 보낼때 받아줄 수 있습니다.
exporter : 프로메테우스 클라이언트 내장 라이브러리를 이용해서 수집할 수 없는 애플리케이션들에서 데이터를 수집할 수 있게해줍니다. 다양한 exporter가 있어서 거의 대부분의 애플리케이션에서 데이터를 수집할 수 있는게 프로메테우스의 장점입니다.


이러한 exporter관련 라이브러리 및 오픈소스를 공유하는 Hub사이트 오픈소스 프로젝트를 맡아 진행하게 되었습니다.

2. 프로젝트 결과물

main Page

  • 검색기능
  • category filtering 기능
  • sorting 기능

Readme Page

  • github에서 크롤링해온 markdown으로 된 readme data를 html로 변환하여 보여줌

Admin Page

  • Exporter hub를 사용하는 유저가 코드수정 없이 exporter hub에 exporter을 추가하거나 수정,삭제 할 수 있는 기능

3. Works

- 초기 세팅


4주안에 빠르게 결과물을 내야하여 CRA초기세팅 진행

CRA(create-react-app)
: 페이스북에서 제공하는 리액트 프로젝트를 쉽게 만들 수 있게 필요한 모듈혹은 설정을 포함하는 보일러 플레이트

- 프로젝트 디렉토리 구조설계


오픈소스 프로젝트 특성상 개발에 참여하는 컨트리뷰터가 직관적으로 접근 할 수 있도록 디렉토리 구조를 짜는데 집중했습니다.

- Exporterhub 개발

Exporter들의 filtering sorting 기능은 데이터를 한꺼번에 받아와서 client side에서 처리했습니다.

이렇게 처리 했을 때의 장점은

  • 즉각적인반응
  • 적은 서버요청
  • 전체 데이터 집한에서 수행

하지만 큰 데이터 집합에서 동작이 어렵다는 단점이있다.

프로젝트에서 처리해야하는 exporter수는 현재30여개가 있었고, 장점에 더 집중해서 데이터를 한꺼번에 받아서 처리하는 방법으로 기능을 구현했습니다.

크게 4개의 컴포넌트가 데이터 집합을 변경하기 때문에 전영상태관리 라이브러리인 Redux를 사용했습니다.

위와같이 Reux 리듀서를 설계했고 각각 로직을 채워나가서 기능을 완성할 수 있었습니다.

3. 어려웠던 점

오픈소스 웹프로젝트를 이해하는 것의 어려움


오픈소스로 유저가 곧 어드민이되는 것에 대해 이해하는것이 어려워서 질문을 많이 했던 기억이있습니다
하지만 직접 기획하고 소통하면서 이해를 할 수 있었고 오픈소스 프로젝트를 완성할 수 있었습니다.

Docker을 이용해서 개발하기


처음에 도커쓸때는 그냥 컨테이너에 코드와 환경을 넣어서 실행시킨다.까지알고있어서
실제로 docker file을 이용해서 image를 만들고 Docker-compose를 이용해서 image들을 컨테이너로 띄우는게 굉장히 생소했습니다. 그래서 CTO님께 질문 정말 많이했습니다..ㅠㅠ

실은 만들어주신 docker file이용해서 이미지 빌드하고 만들어주신 docker-composeㅠ file 이용해서 컨테이너 올리는 것을 해본 것이지만, 이렇게 직접 손으로 빌드하고 컨테이너 올려보니까 전보다는 훨씬 도커에대해 이해할 수 있었습니다.

4. 소감

내가 배운것과 현업에서 실제 하는 것의 엄청난차이

프로젝트를 완성하고 이런식으로 현업에서 하면되겠지 라고 생각했으나 큰 오산이었습니다.. 실제 개발을 시작하고 배포하는 과정이 그냥 이루어지는 것이 아니었습니다. 각각의 절차와 방법(애자일, git-flow)들을 접할 수 있었습니다. 개발은 혼자하는 것이 아니기 때문에 더욱더 철저한 계획과 환경을 구성할 필요가 있다는 것을 배웠습니다.

일단 부딪혀보고 물어보자

처음에는 회사에서 어떤 역할을 맡았다는 부담감에 일을 시작하기도전에 많이 물어봤던 것 같습니다. 그러다보니 물어보는 나 조차 두루뭉실하게 물어봐서 명쾌한 결론이 나지 않았습니다. 그래서 일단 시작을 해서 뭐라도 보여드리면서 여쭤보니까 더 소통도 편하고 길을 잘 잡을 수 있었습니다.

0개의 댓글