Skip to content

hyeong-jun-kim/LibertyForm-Server

 
 

Repository files navigation


Logo

Liberty Form

편리하고 자유로운 형식의 설문 플랫폼
카카오 엔터프라이즈 아카데미 설문 프로젝트

LibertyForm 프로젝트 정리 페이지 »
데일리 스크럼 일지 »

팀원 소개 (Error-it Team)

이름 역할
김형준 PM, Backend
백우진 Frontend
이가영 Frontend
이상협 Machine Learing
한만규 Frontend

Liberty Form 프로젝트 소개

자유롭고 편리한 설문 플랫폼을 구현하기 위해 실시된 프로젝트입니다.
일반적인 설문 플랫폼과 달리, 한 문항당 슬라이드 형식으로 설문이 실시되는 것이 특징입니다.

사용자는 자유로운 형식으로 설문지를 꾸밀 수 있으며, 설문 생성 및 수정, 설문 응답. 응답자 관리 및 분석, 설문지 링크 생성 및 발송 등
설문에 관련된 주요 기능들을 이용하실 수 있습니다.

프로젝트 수행 기간

2022년 9월 1일 ~ 2022년 12월 15일 (15주)

사용 기술

개발 환경

  • Spring Boot
  • Redis
  • MySQL
  • Kubenetis

CI & CD

  • Jenkins
  • ArgoCD

모니터링

  • Prometheus
  • Grafana

테스트

  • JUnit
  • Jmeter

협업 도구

  • Jira
  • Slack
  • Notion

시스템 아키텍처

image

  • 아키텍처 구성

    • 3개의 노드와 3개의 React, Spring, Flask 서버 파드로 구성되었습니다.
    • public subnet, private subnet을 분리했으며, Bastion을 통해서만 private subnet에 접근 가능하게 설정했습니다.
  • CI&CD 파이프라인 구현

    • Github push -> Jenkins gradle build & image build -> DockerHub Image Upload -> service & deployment.yml version update (github) -> ArgoCD Deployment (Auto Sync)
    • 배포 성공, 실패에 대해 알려주는 Slack 알림 기능을 구현했습니다.
  • 데이터베이스 CDC 적용

    • KEA 데이터 관리 기술에서 배운 CDC 기술을 해당 설문 프로젝트에 적용했습니다.
  • Object Storage

    • 사진, 동영상 등 비정형 데이터를 관리하기 위해 Object Storage를 생성했습니다.
    • 외부에서 kakao i cloud Object Storage에 등록하기위해 제공되는 라이브러리가 없어, 이를 직접 구현했습니다.
    • IAM 계정을 통해 클라우드 계정의 권한을 분리했습니다.
  • 모니터링

    • Prometheus를 통해 각 노드의 실시간 리소스를 수집하고, Grafana를 통해 노드별 metrics를 알 수 있습니다.
    • AlarmManager으로 AlertRule을 정의 해, 특정 노드가 CPU 30% 이상 및 RAM 50% 이상 점유 시 Slack으로 알람이 가게하는 기능을 구현했습니다.

CDC 아키텍처

image

  • 데이터 관리기술에서 배운 CDC 기술을 설문 서비스에서 직접 적용하고 싶어, 해당 아키텍처를 설계하고 구현하였습니다.
  • 운영 DB (Source DB)에서 DML이나 DDL 쿼리가 발생하면, 이와 연결된 Debezium Connector를 통해 로그가 수집되며 해당 내용을 카프카 토픽으로 발행합니다.
  • CDC 역할을 수행하는 미들서버에서 해당 토픽을 consume 받아, payload를 분석해 각 타겟 DB로 실시간 마이그레이션이 진행됩니다.
  • 카프카의 토픽으로 내용들이 전달되기 떄문에, druid에서 해당 토픽으로 받아 스키마를 생성하고 Superset으로 druid를 연결 해 실시간으로 데이터 시각화 정보를 수집할 수 있습니다.

LibertyForm 관련 깃허브

libertyForm-WEB
libertyForm-CDC


Awards

🥇 가천-카카오엔터프라이즈 SW아카데미 최우수 프로젝트 선정

About

Gachon kakao-enterprise chatbot project spring server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.7%
  • Dockerfile 0.3%