데이터베이스 기반 자동화 플랫폼 - Lynq Operator 를 소개합니다!

안녕하세요, Bro 여러분.

댓글만 몇번 작성해보다가 제가 개발중인 K8s Operator 가 있어 소개드리기 위해 처음 글을 작성해봅니다.

개발 동기

제가 10년 넘게 재직중인 오래된 스타트업(?)이 있는데, 이곳에서 Multi-tenancy 를 K8s 와 Terraform으로 관리하고 있었습니다.
물론 Tenant 30~50개까지는 별 생각 없이 확장을 했고 큰 불편함이나 문제가 없었습니다.

그러나 위와 같이 관리하며 더 많은 수(100+)의 테넌트를 배포하고 관리하다 보니 여러가지 고충이 있었는데 그중 가장 해결하기 어려운 부분이 필요할 때 즉각적인 프로비저닝이 불가능하다는 것 이었습니다.
주된 이유는 Terraform State 를 업데이트하고 apply 하는데만 상당한 시간이 소요되는것 이었고, Terraform 으로 작성해둔 Tenant Module을 수정하거나 문제가 생겨 롤백을 해야 할 때에도 적지 않은 지연시간이 발생했습니다.

개발 과정

이런 문제를 해결하기 위해 초기버전인 “tenant-operator” 를 회사 내부적으로 개발하여 약 2년간 시범 운용했습니다.
기본적인 요구사항을 모두 회사에 필요한 부분에 맞춰 개발하여 다른곳에서 쓰기에 적절하지는 않았지만 실제로 즉각적인 프로비저닝과, 손쉬운 테넌트 별 상태 관리가 가능했고 내부적으로 운영하며 필요하다고 느낀 다양한 요구사항을 취합하여 범용적인 인터페이스로 다시 설계한것이 **지금 소개드리는 Lynq 라는 Database-driven K8s Operator입니다.
(**참고: 이름에 대한 스토리는 About 페이지에 적어두었습니다.)

소개

이 오퍼레이터는 Database 에 저장된 데이터를 기반으로 K8s 리소스로 프로비저닝하기 위한 오퍼레이터입니다.

아직 데이터 소스는 MySQL만 지원하고 있지만 다양한 데이터 소스를 지원할 예정이며, 비교적 쉽게 추가가 가능하도록 Adapter pattern 으로 구현하고 누구나 추가할 수 있도록 기여를 위한 문서도 추가해두었습니다.

또한 처음 접하는 개념의 운영 방식일 수 있다고 판단하고, 잘못된 이해로 사고를 방지하기 위해 다양한 시각화로 설명을 신경썼습니다.

이용 시 장/단점

장점

  • Slack이나 Atlassian 에서 조직을 생성하면 곧바로 사용 가능한 도메인 및 전용 환경이 생성되는것 처럼 구현이 쉽게 가능합니다.
  • 개발팀은 배포 환경 제어를 위한 데이터만 잘 관리하고, 인프라팀은 배포 환경에 대한 구성만을 신경쓸 수 있게 됩니다.
  • 이 외에도 반복 가능한 구성으로 인프라를 관리해야 하는 대부분의 상황에 알맞으며, 필요한 정보(반복된 구성에 대한 템플릿)만 형상관리하면 됩니다.
  • CR 또한 생성할 수 있고, 외부 인프라까지 통합해야 하는 경우 Crossplane 과 같은 프로젝트를 함께 사용해 더욱 강력하게 구성이 가능합니다.

단점

  • 반복되는 구성이 거의 없는 경우 필요 없습니다.
  • 모든 반복되는 구성까지 상태/형상 관리를 해야 하는 경우 필요 없습니다.
  • 아직 오픈소스로 개발을 시작한지 1개월이 채 되지 않아 신뢰도가 낮습니다. (문제를 발견하시면 Issue 또는 PR로 기여해주시면 감사하겠습니다..)

기타 특징

  • Helm 지원
  • Prometheus, Grafana Dashboard 제공
  • 1.28 이후 대부분 K8s 버전 지원 (1.28 이하만 테스트 되었지만 스펙상 1.22 이상이면 동작 가능합니다.)

마치며

이 외에도 프로덕션 레벨에서 안심하고 운용할 수 있도록 E2E 를 충분히 작성하고, 다양한 기능을 구현해두었으니 관심 있으신 분들께서는 한번씩 GitHub Repo와 웹사이트에 방문하셔서 훑어봐주시면 감사하겠습니다.

이 프로젝트는 Apache 라이센스를 따르며 상업적인 목적이 전혀 없음을 알려드리며, Star 로 응원을 해주신다면 매우 감사드리겠습니다 :slight_smile:
개인적인 소망일 뿐이지만 차후 CNCF Sandbox에 지원하여 최종적으로 졸업까지 가자는 목표를 갖고 있습니다.

4 Likes

승현님 개발 중인 프로젝트 공유 감사합니다! 저 또한 상세히 살펴보겠습니다.
혹시 저희가 SNS에 홍보를 추가로 하고 싶은데, 승현님의 링크드인 주소를 공유해주실 수 있을까요? (어려우시다면 편하게 말씀해주시면 됩니다!)

2 Likes

앗 감사합니다!

최근 관리를 전혀 안해서 굳이 필요 없다면 안넣어주셔도 괜찮은데, 일단 프로필에 링크 추가해두었습니다

2 Likes

추가해주신 것 확인했습니다!사족이지만.. 재능 마켓 관련하여 웹사이트 만드셨던 이력 보고 저도 이전에 재능 교환 매칭 플랫폼 기획했던 게 기억나서 괜히 반갑네요 ㅎㅎ :smiling_face:

2 Likes

ㅎㅎ 10년 전에 잠깐 일했던 곳인데 아직도 운영되고 있네요

혹시 SNS 홍보는 나중에 어떤 채널에서 확인 가능한지 알수 있을까요?

1 Like

아마 제 개인 링크드인으로 올릴 것 같습니다 ㅎㅎ 오늘/내일 중으로 올리려고 해요 :slight_smile:

2 Likes

참고로 Insight 카테고리에 올라오는 글은 슬랙봇/Discord 웹훅으로도 전송되고 있습니다!

1 Like

앗 댓글 보고 찾아봤더니 디스코드나 슬랙에 초대되려면 23일까지 오픈 프로젝트를 신청했어야 하는건가 보네요 :joy:

메뉴 최상단에 있는 Slack 링크로 연결하면 뭔가 redirection 이 정상이 아닌것 같고요 ㅎㅎ…

2 Likes

Add to Slack

혹시 슬랙 추가 위쪽 버튼으로도 문제가 있으실까요? 리디렉션 문제는 제가 확인해보겠습니다.
디스코드는 저희가 현재 커뮤니티와 연동 후 전체 Bro를 초대하려고 준비 중입니다.
승현님은 별도로 제가 초대드리겠습니다 ㅎㅎ 메일 보내드릴게요!

1 Like

넵 올려주신 링크 타고 앱 연결하려고 시도하면 다음과 같이 나옵니다

아하… 제가 확인해보겠습니다 ㅠㅠ

1 Like

@selene 님! 대단하십니다. :slight_smile:

1 Like