An open API service indexing awesome lists of open source software.

https://github.com/jin-sungdae/truedoc

분산 시스템 기반으로 설계된 EMR 신청 플랫폼으로, 회원가입 및 구독 관리 기능을 제공합니다. 사용자가 EMR 서비스를 신청하고, 구독 상태를 조회 및 관리할 수 있도록 구축되었습니다.
https://github.com/jin-sungdae/truedoc

mybatis mysql nginx spring-boot tomcat vue webflux

Last synced: 3 months ago
JSON representation

분산 시스템 기반으로 설계된 EMR 신청 플랫폼으로, 회원가입 및 구독 관리 기능을 제공합니다. 사용자가 EMR 서비스를 신청하고, 구독 상태를 조회 및 관리할 수 있도록 구축되었습니다.

Awesome Lists containing this project

README

        

![트루닥 스크린샷](https://github.com/user-attachments/assets/e3aff21e-ee95-4487-b690-bd023e03b6ae)

주소 : [트루닥](https://mental.truedoc.it)

---

# ☑️ 프로젝트 소개

분산 시스템 기반으로 설계된 EMR 신청 플랫폼으로, 회원가입 및 구독 관리 기능을 제공합니다. 사용자가 EMR 서비스를 신청하고, 구독 상태를 조회 및 관리할 수 있도록 구축되었습니다.

- 프로젝트명 : 트루닥
- 진행 기간 : 2023.5 ~ 2024.5 (12 개월)
- 💡 **기여도** : 해당 프로젝트의 개발 업무 중 **80%의 할당량**이 단독으로 저에게 주어졌으며, 이를 기한 내에 완수했습니다.
- 주요 업무 : 프로젝트 메인 개발자
- 활용 기술 : Spring Boot, Spring WebFlux, Vue, MySQL

💡 분산 시스템을 기반으로 제작된 프로젝트

---

# ☑️ 프로젝트 진행과정 및 나의 역할

### 1. 아키텍처 설계

- 서비스 아키텍처 설계 단계부터 참여하여 프론트엔드 및 백엔드 메인 MVP를 담당
- EMR API를 활용하여 API 설계 및 테이블 설계

### 2. 서비스 구축





- Tomcat 리소스 블로킹을 방지하기 위해 스트리밍 방식을 활용한 파일 업로드 서비스 구축
- Spring WebFlux의 WebClient를 사용하여 서버 간 REST API를 비동기 논블로킹 방식으로 호출
- 다량의 데이터 처리 과정에서 일부 실패를 복구할 수 있도록 재시도 및 보상 메커니즘을 적용
- 비동기 재시도 과정에서 무한 재귀로 빠질 가능성을 방지하기 위해 타임아웃 메커니즘을 적용, 일정 시간 내 응답이 없을 경우 강제 종료하도록 설계
- ISMS-P 대응을 위한 개인정보 암호화 및 접근 관리 통제

### 3. 서버 안정화 및 유지보수

- 톰캣 모니터링을 위한 로그 관리
- 운영 이슈 대응

---

### ☑️ 프로젝트 성과 및 배운점

> 성과 :
>
- WebClient를 활용한 비동기 API 호출을 통해, 각 요청을 독립적인 트랜잭션으로 관리하고, 롤백 메커니즘을 적용하여 데이터 정합성을 유지하며 평균 응답 시간을 60% 단축
- 부분 실패 처리(Partial Failure Handling) 메커니즘을 도입하여, 실패한 작업들을 선별적으로 수집하고 오류의 영향을 최소화.
- 실패한 요소들은 독립된 스레드와 트랜잭션 내에서 고립된 오류 처리(Fault Isolation) 방식으로 관리하였으며, 보상 트랜잭션(Compensating Transaction)을 적용하여 데이터 무결성을 확보. (Error Rate = 0, MTTR = 7.9)
- 다중 이미지 업로드 시간을 감소시키기 위해서 파일 업로드 진행을 병렬 처리로 구현하였고, 다중 파일 업로드 시 업로드 효율을 2배 증가

> 배운점:
>
- 비동기 API 호출 시 트랜잭션을 독립적으로 관리하고, 롤백 메커니즘을 적용하여 데이터 정합성을 유지하는 전략을 배웠습니다.
- 독립된 스레드와 트랜잭션 내에서 고립된 오류 처리를 구현하면서, 마이크로서비스 및 분산 시스템에서의 오류 복구 전략을 습득하였습니다.
- Tomcat 리소스 블로킹을 방지하기 위해 스트리밍 방식의 파일 업로드 서비스를 설계하면서, 서버의 안정적인 리소스 활용 기법을 배웠습니다.