Lee Minjae's Portfolio

이민재

백엔드 개발자

ABOUT ME

이민재 | Lee Minjae

목표를 향해 끝까지 파고드는 성격의 백엔드 개발자입니다. Java/Spring 백엔드 개발을 중심으로 성장중이며 현재는 삼성청년SW·AI아카데미 교육을 통해 기본기를 다지고 있습니다. 저의 가장 큰 강점은 문제 해결 능력이며 시스템의 구조와 원리를 이해하는 것을 중요하게 생각합니다. 앞으로도 항상 사용자의 경험을 개선하기 위해 고민하며 성장하는 개발자가 되고 싶습니다.

minjae5024@naver.com
010-4792-7581

자격증

  • 정보처리기사
  • SQLD
  • 멀티미디어콘텐츠제작전문가
  • 네트워크관리사 2급

교육사항

  • 삼성청년SW·AI아카데미(SSAFY) 2026.01 ~ (교육 진행 중)

SKILLS

Backend

Java Spring Boot

Database

MySQL PostgreSQL JPA QueryDSL Redis

DevOps

Git Docker GitHub Actions Jenkins AWS EC2 AWS RDS GCP

PROJECTS

팀 협업 도구 통합 대시보드 (WASSUB)

Jira·GitLab·Notion·Mattermost처럼 여러 곳에 흩어진 팀의 작업 정보를 한 화면에서 실시간으로 확인할 수 있게 모아주는 대시보드 서비스입니다. 6인 팀에서 백엔드 파트장 및 Jira 연동을 담당했습니다.

주요 기능

  • Jira OAuth 3LO 연동 및 위젯 조회 API(스프린트·칸반·기한·활동)
  • 도구에 묶이지 않는 공용 실시간 알림(SSE) 인프라
  • 팀 공유 캐시(single-flight·stale 폴백)로 외부 API 호출 최적화

시스템 아키텍처 (클릭 시 확대)

WASSUB 시스템 아키텍처

적용 기술

Java 21 Spring Boot Spring Data JPA PostgreSQL Redis SSE JWT OAuth 2.0 Docker Jenkins
  • 웹훅·SSE 실시간화 : 30초 폴링으로만 갱신되던 위젯을, 캐시 만료 시 이전 값을 즉시 보여주고 웹훅으로 변경을 감지해 SSE로 알리는 방식으로 바꿔 반영 지연과 화면 멈춤을 없앴습니다.
  • 공용 실시간 알림(SSE) 인프라 : 발행과 구독을 분리해 도구는 이벤트를 발행하기만 하면 되도록 설계, Jira를 시작으로 8종 이벤트가 코드 한 줄로 합류하는 동안 인프라 코드는 그대로였습니다.
  • 캐시 성능 : single-flight와 stale 폴백으로 캐시 히트 응답을 5.57초에서 0.006초로, 동시 20건 요청도 외부 호출 1회로 줄였습니다.
  • 캐시가 만든 인가 구멍 : 성능을 위해 넣은 공유 캐시가 권한 없는 사용자에게 데이터를 노출하는 문제를 발견해, 캐시를 읽기 전 접근 권한을 먼저 확인하도록 순서를 바꾸고 회귀 테스트로 고정했습니다.
SSAFY 비공개 저장소 · 요청 시 코드 제공

농축수산물 가격 조회 서비스

공공데이터 API를 활용하여 전국의 농축수산물 도매 가격 정보를 조회하고, 사용자들끼리 소통할 수 있는 커뮤니티 서비스입니다.

주요 기능

  • 공공데이터 API 기반 농축산물 도매 가격 조회
  • 시장별 사용자 커뮤니티 게시판 (CRUD)
  • 조건 동적 검색 기능(QueryDSL)

시스템 아키텍처 (클릭 시 확대)

graph LR %% 스타일 정의 classDef client fill:#f3f4f6,stroke:#9ca3af,stroke-width:2px,color:#1f2937 classDef ext fill:#fff7ed,stroke:#fdba74,stroke-width:2px,color:#9a3412 classDef ci fill:#f8fafc,stroke:#cbd5e1,stroke-width:2px,color:#334155 classDef spring fill:#dcfce7,stroke:#22c55e,stroke-width:2px,color:#166534 classDef db fill:#dbeafe,stroke:#3b82f6,stroke-width:2px,color:#1e40af classDef redis fill:#fee2e2,stroke:#ef4444,stroke-width:2px,color:#991b1b Client((클라이언트)):::client DataAPI[공공데이터포털]:::ext subgraph VPN["Tailscale VPN"] Dev[개발자]:::ci GH[GitHub Actions]:::ci subgraph Server["홈 서버"] WAS["WAS (Spring Boot)"]:::spring Redis[("Redis")]:::redis MySQL[("MySQL")]:::db WAS <-->|읽기 / 쓰기| MySQL WAS <-->|데이터 캐싱| Redis end Dev -.->|코드 Push| GH GH -.->|빌드 / 배포| WAS end style VPN fill:none,stroke:#94a3b8,stroke-width:2px,stroke-dasharray:5 5 style Server fill:#ffffde,stroke:#aaaa33 Client -->|HTTP 요청| WAS WAS -->|데이터 조회| DataAPI

적용 기술

JAVA Spring Boot JPA QueryDSL Redis MySQL AWS EC2/RDS GitHub Actions
  • 데이터베이스 최적화 : 게시글 조회 시 발생한 N+1 문제에 Fetch Join을 적용하고 users테이블에 인덱스를 추가해 응답 속도를 개선했습니다.
  • 캐싱 도입 : 도매 가격 API 응답을 Redis에 캐싱하여 동일 데이터 조회 시 응답속도를 개선했습니다.
  • 민감정보 관리 : 외부 API키, JWT 시크릿 키 등의 민감정보를 GitHub Secrets와 환경변수를 이용해 외부로 분리했습니다.
  • 인프라 및 보안 개선 : 클라우드 유지 비용 절감을 위해 기존 AWS EC2 환경에서 온프레미스(홈 서버) 환경으로 인프라를 마이그레이션했습니다. 또한, 포트 개방으로 인한 보안 취약점을 방지하고자 Tailscale VPN을 도입하여 Zero Trust 안전망을 구축했습니다.

AI 여행 비서 서비스

지도 기반 관광 정보 검색과 AI 여행 플래너를 제공하는 SSAFY 팀 프로젝트(2인)입니다. 인증, 배치, AI 모듈 등 백엔드를 주로 개발했습니다.

주요 기능

  • AI 에이전트 기반 여행 코스 추천 챗봇
  • 지도 연동 관광 정보 검색 및 커뮤니티
  • 공공데이터 동기화·리포트 생성 정기 배치

시스템 아키텍처 (클릭 시 확대)

graph TD %% 스타일 정의 classDef client fill:#f3f4f6,stroke:#9ca3af,stroke-width:2px,color:#1f2937 classDef ext fill:#fff7ed,stroke:#fdba74,stroke-width:2px,color:#9a3412 classDef spring fill:#dcfce7,stroke:#22c55e,stroke-width:2px,color:#166534 classDef tool fill:#dbeafe,stroke:#3b82f6,stroke-width:2px,color:#1e40af Client((클라이언트)):::client LLM[LLM API]:::ext subgraph "서버 (Spring Boot)" Controller["AiChatController"]:::spring Planner["ToolPlanner"]:::spring T1[날씨 Tool]:::tool T2[관광지 검색 Tool]:::tool T3[경로 최적화 Tool]:::tool Controller --> Planner Planner --> T1 Planner --> T2 Planner --> T3 end Client -->|질문| Controller Planner <-->|계획 / 추론| LLM

적용 기술

JAVA Spring Boot Spring Security Spring Batch Spring AI MyBatis MySQL Vue.js
  • AI 에이전트 설계 : Spring AI 기반 서버 주도형 플래너(ToolPlanner)로 날씨, 관광지 검색, 경로 최적화 등 4개 도구의 연쇄 호출을 오케스트레이션했습니다.
  • 개인정보 접근 통제 : 에이전트가 타인의 회원 정보를 조회하지 못하도록 SecurityContext 기반으로 본인 정보만 반환하게 제한했습니다.
  • Spring Batch 파이프라인 : 공공데이터 동기화 → AI 요약 → 일일 리포트 PDF 생성까지 4-Step 정기 배치로 자동화했습니다.
SSAFY 비공개 저장소 · 요청 시 코드 제공

CONTACT

항상 연락을 기다리고 있어요!

minjae5024@naver.com
010-4792-7581
GitHub