채용공고 올리기

이유빈님을 응원해보세요!

지금 만족하고 있어요

미리보기

기본 정보

이름
이유빈
직업
백엔드 개발자
간단 소개

기본에 충실하면서도 새로운 기술을 적극적으로 탐구하고, 다양한 분야에 관심이 많습니다.

자기소개

자기소개

1. 기본에 충실하면서도 새로운 기술을 적극적으로 탐구합니다.

  • 프레임워크와 기술의 적절한 사용을 위해 공식 문서와 개발 서적 등을 읽으며 기본기를 다지고 있습니다.

  • MSA 기반 티켓 예매 프로젝트에서 팀원들과 기술적 논의를 거치며 동시성 제어와 대기열 구현을 위해 Redis를 도입하였습니다.

  • 프로젝트에서 부족했던 점이었던 MSA와 Spring Cloud를 졸업 논문 주제로 선정하여 개념과 장단점을 체계적으로 분석하며 설계와 아키텍처의 이해도를 높이기 위해 지속적으로 학습해왔습니다.

2. 협업을 중요시 합니다.

  • PM/UX&UI/FE/BE가 함께 참여한 프로젝트에서 백엔드 팀장으로 참여하여 개발 직군 간 소통 체계를 확립하고, 회의 양식을 통일하여 개발 기간을 목표 기간보다 2일 단축하였습니다.

  • 프로젝트 간 Git과 Github가 익숙하지 않은 팀원에게 사용법을 알려주고, 페어프로그래밍을 통해서 부족한 부분을 협업을 통해 채워나갔습니다.

3. 다양한 분야에도 관심이 많습니다.

  • AI와 IT 기술의 발전 가능성에 깊은 관심을 가지고 학습을 이어오고 있습니다.

  • LG와 네이버 커넥트 재단의 AI 교육과정에 참여하여 다양한 AI 모델과 데이터 최적화 방안을 학습하였고, 학교의 ‘비즈니스 딥러닝’ 수업을 통해 실제 비즈니스 상황에서 활용되는 모델의 원리와 활용 방법을 배웠습니다.

기술 스택

기술 스택

Java, Spring Boot, JPA, Docker, ec2, github-actions, MySQL, Spring Cloud, Spring Security, JWT, PostgreSQL, Redis, swagger

프로젝트

프로젝트명

대규모 트래픽 처리 기반 티켓 예매 서비스

소속/기관명

AI를 활용한 백엔드 아키텍처 심화 과정/스파르타코딩클럽

프로젝트 기간

2024.09. ~ 2024.10.

프로젝트 내용

대규모 트래픽을 안정적으로 처리하며, 사용자에게 정확하고 신뢰성 있는 티켓 예매 경험을 제공하는 MSA 기반의 티켓 예매 서비스입니다.

역할

  • Back-end

사용 기술

  • Spring Boot, Spring Cloud, Spring Data JPA, Spring Security, JWT, PostgreSQL, Redis, Docker, RDS, EC2, Github Actions, Swagger

주요 업무

  • Gateway 라우팅 설정

  • 인증/인가 기능 구현

  • 티켓 CRUD 구현

  • 대기열 시스템, 동시성 제어 기능 구현

1. Redis 기반 대기열 시스템을 통한 티켓 예매 서비스 성능 최적화

Redis의 Sorted Set을 활용한 대기열 시스템 구현.

기술적 의사결정:

  • Kafka와 Redis의 장단점을 비교하며 결정.

  • 티켓 예매 서비스에서 대기열은 빠른 처리와 응답성이 핵심이고, 일시적인 대기열 관리가 중요하기 때문에 데이터 관리 시간이 짧음.

  • 실시간성을 고려하여 Redis를 활용한 대기열 시스템을 도입하기로 결정.

  • 대기열 진입 시점은 예매 페이지 접속 시점으로 결정.

구현 내용:

  • 순서 보장을 위해 대기열 진입 시간을 스코어 값으로 처리.

  • 대기열을 대기 큐와 실행 큐로 나누고 실행 큐에 인원이 다 차면 대기 큐에서 대기하도록 처리.

2. 동시성 제어를 통한 TPS 및 오류율 개선 (35.1/sec -> 346.6/sec, 0.08% -> 0%)

동시성 제어 시점:

1. 예매 절차 진행 중 티켓 재고 감소 시점

2. 대기열 진입 간 같은 시간에 대기열 진입을 요청했을 때

기술적 의사 결정:

  • 동시성 제어를 위한 낙관적 락, 비관적 락, 분산 락을 비교.

  • 대기열 진입 간 동시성 문제는 DB 접근이 필요하지 않고, 또한, 낙관적 락과 비관적 락을 사용 했을 때 충돌 발생 가능성이 높아진다는 점과 성능 저하가 발생한다는 점을 고려하여 Redis 분산 락을 사용.

  • Lettuce를 사용했을 때 스핀 락으로 인한 서버의 부하 증가와 우선순위 역전 문제가 발생할 수 있어 Reddison 라이브러리를 사용하여 분산 락을 구현.

트러블 슈팅:

  • 대기열 시스템에서 5000 건의 부하 테스트 간 발생했던 Sorted Set의 순서 보장 실패 문제를 분산 락을 도입하여 해결.

  • TPS 35.1/sec -> 346.6/sec로 성능 향상, 오류율 0.08% -> 0%로 성능 개선.

3. 내부 인증 객체를 사용한 인증/인가 방식 구현

Why? 인증 절차 간소화 및 코드 중복을 제거하고 유지보수의 용이성을 높이기 위해.

내부 인증 객체란?

  • 내부 서비스 통신에 사용되는 객체로 인증이 완료된 사용자 정보를 담아두는 객체를 말한다.

작동 방식:

1. 로그인 시 JWT 토큰 발급.

2. API 게이트웨이로 요청이 발급된 토큰과 함께 들어오면 토큰을 외부 키로 검증한 후 내부 인증 객체로 변환하고, 이를 내부 키으로 다시 변환하여 요청 헤더에 추가.

3. 각 서비스에서는 Argument Resolver를 통해 컨트롤러에 진입 전에 이를 복호화하여 검증하고, 내부 인증 객체로 변환.

4. 컨트롤러에서 내부 인증 객체를 이용하여 권한 처리.

프로젝트명

대규모 AI 시스템 설계 프로젝트

소속/기관명

AI를 활용한 백엔드 아키텍처 심화 과정/스파르타코딩클럽

프로젝트 기간

2024.08. ~ 2024.09.

프로젝트 내용

MSA기반의 시스템을 설계하고 구현하고, 다양한 기술과 방법론을 적용한 물류 관리 및 배송 시스템입니다.

역할

  • Back-end

사용 기술

  • Spring Boot, Spring Cloud, Spring Data JPA, Spring Security, JWT, PostgreSQL, Redis, Kafka, Docker, Swagger

주요 업무

  • Gateway 라우팅 설정

  • 인증/인가 기능 구현

  • AI 라이브러리 연동 및 배송 기능 최적화 기능 구현

  • Slack 연동 기능 구현

  • Swagger 설정

1. AI 라이브러리 연동 및 배송 기능 최적화 기능 구현

기술적 의사 결정:

  • 효율성 향상을 위해 Spring AI를 사용하여 AI 모델 관련 외부 API 요청 로직을 간소화.

구현:

  • Spring AI를 사용하여 Gemini 연동.

  • Gemini에 각 출발지와 도착지, 경유지 정보를 제공하고, 최적화된 경로를 요청.

  • 요청에 대한 모든 응답이 Json 형식이 되도록 응답 양식 통일.

2. Slack 연동 기능 구현

구현:

  • WebClient로 날씨 데이터를 가져옴.

  • 이를 Gemini에 연동하여 데이터 요약 정보를 요청.

  • 받은 요약 정보를 Slack Message로 사용자에게 제공.

프로젝트명

오피스너(오피스 건물 소유자를 위한 건물 관리 솔루션)

소속/기관명

백엔드 개발 부트캠프/패스트캠퍼스강남학원

프로젝트 기간

2024.05. ~ 2024.06.

프로젝트 내용

기업과 연계하여 진행한 실무 프로젝트입니다.

인원

  • PM: 4명, UX/UI: 2명, FE: 3명, BE: 3명

역할

  • Back-end 팀장

사용 기술

  • Spring Boot, Spring Security, JWT, Redis, MySQL, Github Actions, Docker, EC2, S3, RDS

주요 업무

  • 이슈 CRUD, 마이페이지 기능 구현

  • 실시간 알림 기능 구현

  • BDD 패턴을 활용한 단위 테스트 코드 작성

  • CI/CD

1. 실시간 알림 기능 구현

기술적 의사 결정:

  • 알림 요청에 대한 응답을 제공하면 처리 과정은 종료되기 때문에 지속적인 연결을 유지할 경우 서버의 부하를 증가시킬 수 있다.

  • 알림이 필요한 이벤트가 빈번하게 발생하지 않는다.

  • 따라서 Long Polling 방식을 도입하여 알림이 필요한 경우에만 서버와의 연결을 유지하도록 구현.

  • 비동기 처리와 응답 시간을 제한하여 자원 관리 효율성을 높이도록 구현.

구현:

  • 이벤트를 발행하여 이벤트를 수신하면 알림 처리가 비동기로 처리되도록 구현.

트러블 슈팅:

  • Spring Security의 권한 처리가 다른 스레드에서 처리되어 Long Polling의 모든 응답에서 401 Error가 발생하는 문제 발생.

원인 : 구현 시 사용된 DeferredResult가 응답 시 다른 스레드에 의해서 인증을 거치는데, 이 때 SecurityContext를 가져올 방법이 없기 때문.

해결: Security Context를 올바르게 전파하도록 http securityContextRepository에DelegatingSecurityContextRepository주입하고, DelegatingSecurityContextRepository 내부에 RequestAttributeSecurityContextRepository를 주입하여 문제 해결.

2. Redis를 사용하여 1차 캐시 구현

기술적 의사 결정:

  • 상세 페이지 접속 시 이전 페이지의 데이터를 사용한다.

  • 해당 데이터를 Redis에 저장하여 데이터베이스 접근을 줄인다.

구현:

  • 최초 데이터 제공 시 DB에서 데이터를 가져오고 이를 Redis에 저장한다.

  • 이후 해당 데이터를 Redis에서 가져온다.

포트폴리오

URL

link

블로그

깃허브
link

블로그

URL 링크
link

깃허브

깃허브

교육

소속/기관명

한국외국어대학교

종류 | 전공

대학교(학사) | 헝가리어과/AI융합전공(Software&AI)

재학 기간 | 재학 상태

2019.03. ~ 현재 | 재학 중

대외활동

활동명

AI를 활용한 백엔드 아키텍처 심화 과정

소속/기관명

스파르타코딩클럽

연도

내용

스파르타코딩클럽의 Java 단기 심화 부트캠프에 참여하여 마이크로서비스 아키텍처의 개념을 학습하고, 여러 프로젝트에서 이를 Spring Cloud를 사용하여 설계 실습을 진행했습니다. 이 과정에서 멀티 모듈 구조를 도입하여 유연한 설계를 통해 시스템의 확장성과 유지보수성을 높였습니다.

Redis와 Kafka를 활용한 대규모 트래픽 처리와 데이터 관리 방법에 대해 학습하였습니다. 이를 프로젝트에 적용하여 대규모 트래픽 발생 시 데이터를 안정적으로 처리하고 관리하는 방법과 데이터의 일관성을 유지하는 기능을 구현하였습니다.

AI 라이브러리를 연동하여 사용자에게 제공되는 데이터를 최적화하고, 적절한 정보를 제공하는 기능을 구현하였습니다.

활동명

AI 엔지니어 기초 다지기

소속/기관명

네이버커넥트재단

연도

내용

네이버커넥트재단에서 주관하는 교육 프로그램에 참여하여 딥러닝과 머신러닝의 기본 원리에 대해 학습하고, 다양한 AI 모델의 구조와 사용 방법을 익혔습니다. 이를 통해 CNN, RNN, Transformer 등 모델별 구조의 차이를 이해하고, 각 모델이 어떤 문제 상황에 적합한지 판단하는 역량을 키웠습니다. 또한, 실습을 통해 이러한 모델을 문제 상황에 적용하며, 문제 해결을 위한 데이터 전처리 및 성능 개선 과정을 경험했습니다.

활동명

백엔드 개발 부트캠프

소속/기관명

패스트캠퍼스

연도

내용

패스트캠퍼스의 백엔드 개발 부트캠프에 참여하여 Java와 Spring을 기반으로 한 백엔드 기술을 체계적으로 학습했습니다. 객체지향 프로그래밍, 디자인 패턴, 데이터베이스 설계, Restful API 개발 등의 핵심 지식을 쌓았습니다. 또한, 프론트엔드와 진행한 미니프로젝트와 PM, UX/UI, Front-end, Back-end가 함께 진행한 기업 연계 최종 프로젝트를 통해 학습 내용을 실무에 적용하며 협업 역량과 고객 중심의 문제 해결 역량을 키웠고, 우수 수료생으로 수료하였습니다.

활동명

Aimers 3기

소속/기관명

LG AI연구원

연도

내용

LG AI연구원에서 주관하는 AI 전문가 양성 프로그램인 Aimers에 참여하여 AI 이해를 위한 기초 수학과 AI 모델들의 이론과 사용 방법에 대해서 학습했습니다. 이후 온라인 해커톤에 참여하여 학습 내용을 적용하였고, 수료하였습니다.

외국어

외국어명

영어

점수

비즈니스 회화 가능

댓글