미리보기
기본 정보
저는 Java와 Spring Boot를 활용한 백엔드 개발에 강점을 가진 소프트웨어 엔지니어입니다. MSA 환경에서의 시스템 전환 및 최적화, ORM을 활용한 데이터 처리 개선, OAuth 기반 인증 시스템 구축, 그리고 무중단 배포를 위한 CI/CD 파이프라인 구축 경험이 있습니다. 또한, Next.js를 사용하여 간단한 프론트엔드 개발 및 배포도 가능합니다. 다양한 프로젝트에서 백엔드 최적화와 시스템 안정성을 개선하며, 유지보수성을 높이는 데 기여했습니다.
기술 스택
Java, Spring Boot, MySQL, Oracle, next.js13, Node.js, Google Cloud Platform, AWS
경력
스윗코리아
Integration engineer | User Relations Team
2023.05. ~ 2024.06. (1년 2개월)
서드파티 앱 통합을 위한 플랫폼 설계 및 오픈 API 설계 경험
성능 최적화를 위해 동기 코드를 비동기로 변환하여 시스템 처리 성능 및 응답 시간 단축
OAuth와 JWT 기반의 인증 시스템 구현 및 백오피스 관리 기능 개발
Next.js를 활용해 레거시 프로젝트를 재구축하고 프론트엔드 개선
테크니컬 라이터와 협업하여 인하우스 툴 기능을 개선
감사 로그 모니터링 앱 및 Jira, Confluence 연동 앱 개발 경험
웅진씽크빅
연구원 | 차세대 통합 인증 팀
2021.08. ~ 2023.04. (1년 9개월)
마이크로서비스(MSA) 프로젝트 개발 경험
스마트올 중학 관리자 백오피스 개발 경험
CI/CD 파이프라인을 AWS CodeDeploy로 자동화하여 배포 안정성 확보
EXPLAIN 쿼리를 사용하여 슬로우 쿼리 성능 최적화 및 데이터베이스 인덱스 분석
회원권 실시간 배치 시스템 개발 및 MSA 환경에서 운영
ORM 도입을 통해 데이터 타입 명확화 및 코드 가독성 개선
프로젝트
개발자 플랫폼 개발
스윗코리아
2023.12. ~ 2024.06.
개발자 플랫폼 개발
[소개] 외부 개발자들이 Swit의 서비스를 손쉽게 이용할 수 있도록 오픈 API를 개발하고, 타사 서비스를 Swit 내에서 사용할 수 있게 App Store 운영 및 앱을 개발했습니다.
[역할]
외부 서비스와의 통합을 위해 서드파티 앱 연동 플랫폼을 설계하고 개발
외부 개발자들이 Swit API를 손쉽게 활용하도록 오픈 API 설계 및 SaaS 플랫폼 확장
기존 동기 코드를 비동기 처리로 전환하여 응답 시간 단축 및 시스템 성능 개선
외주 개발 코드의 리팩토링을 통해 시스템 성능 최적화, 안정성 및 유지보수성 향상
Swit 서비스의 감사 로그를 열람할 수 있는 앱 개발
Jira 및 Confluence와의 연동을 지원하는 앱 개발
[문제 해결 사례]
외부 SaaS API 응답 시간 지연 및 서비스 프리징 문제
문제: 외부 SaaS 서비스에서 데이터를 가져오는 API 호출이 동기적으로 이루어져 응답 지연 및 간헐적인 서비스 프리징 발생
해결 과정:
문제 분석: 코드 검토를 통해 API 호출이 동기적으로 처리되고 있으며 페이지네이션이 적용되지 않아 타임아웃이 발생하는 것을 확인
비동기 처리로 개선:
async/await
를 사용하여 API 호출을 비동기로 전환하고, 페이지네이션 기능을 추가하여 데이터 불러오는 양을 최적화
결과: 응답 시간이 약 3배 개선되었고, 서비스 프리징 현상이 완전히 해소
JWT 토큰 리프레시 기능 부재 문제
문제: JWT 토큰 만료 시 자동 갱신 기능이 없어 사용자에게 매번 OAuth 재인증 요구
해결 과정:
미들웨어에 인터셉터 로직을 추가하여 API 호출 시 토큰 유효성을 검사하고, 만료 시에만 리프레시 토큰을 통해 새 토큰 발급
잘못된 토큰 또는 인증 오류 발생 시에만 OAuth 재인증을 시도하여 불필요한 API 호출을 최소화
결과: 토큰 만료 시 자동 리프레시 기능으로 사용자 인증 불편함을 크게 줄였고, 전체적인 시스템 성능 개선
인하우스툴 개발
스윗코리아
2023.05. ~ 2024.02.
[소개] 테크니컬 라이터가 문서 작업 및 이메일 작성을 효율적으로 수행할 수 있도록 기존 인하우스 툴을 리팩토링하고 고도화했습니다.
[역할]
기술 요구 사항을 분석하고 테크니컬 라이터와 협력하여 툴의 기능을 개선
GCP CloudBuild를 활용한 무중단 배포 파이프라인 구축
기존 Flask와 바닐라 JavaScript로 구현된 레거시 프로젝트를 Next.js로 전환하여 재구축
백오피스 툴에 OAuth 인증 적용으로 관리자 전용 로그인 기능 개발
[문제 해결 사례]
파일 기반 모놀리식 구조 및 가독성 저하 문제
문제: 기존 인하우스 툴은 모든 코드가 하나의 파일에 집약되어 있었으며, DOM 조작이 바닐라 JavaScript 함수로 직접 처리되어 가독성이 낮고 유지보수가 어려웠습니다. 데이터는 인메모리 데이터베이스를 통해 파일로 저장되어, 데이터 안정성이 보장되지 않았습니다.
해결 과정:
아키텍처 개선: 코드가 한 파일에 몰려 있는 문제를 해결하기 위해 프론트엔드와 백엔드를 분리했습니다. 프론트엔드는 React로, 백엔드는 FastAPI로 전환하여 유지보수성을 높였습니다.
데이터베이스 개선: 인메모리 DB가 파일에 데이터를 저장하던 구조에서 GCP Cloud SQL을 사용하는 RDBMS로 전환하여, 데이터 안정성을 확보했습니다.
코드 모듈화: 기능별로 코드를 분리하고 React와 TypeScript를 활용하여 가독성을 높이고, 비동기 처리로 API 호출 성능을 개선해 유지보수에 용이한 구조를 구축했습니다.
결과: 기능별 코드 분리로 관리가 용이해졌으며, 서비스의 안정성이 크게 향상되었습니다. 프론트와 백엔드의 분리로 유지보수가 쉬워졌고, 데이터 손실 문제도 해결되었습니다.
인증 시스템 부재 문제
문제: 기존 인하우스 툴에는 인증 시스템이 없어 누구나 접근이 가능해 보안 위험이 있었습니다. 특정 권한을 가진 사용자만 접근해야 하는 데이터에도 제약 없이 접근할 수 있는 문제가 있었습니다.
해결 과정:
OAuth 인증 도입: 외부 OAuth 서비스를 사용해 인증된 사용자만 툴에 접근할 수 있도록 설정했습니다. 인증된 사용자는 JWT 토큰으로 관리하여, 해당 토큰을 사용해 권한을 검증하는 방식으로 보안을 강화했습니다.
미들웨어 적용: 백엔드에 OAuth 인증 미들웨어를 추가하여, 인증된 사용자만 백오피스에 접근할 수 있도록 설정했습니다.
결과: 테크니컬 라이터와 같은 특정 권한을 가진 사용자만 툴을 사용할 수 있게 되어 불필요한 접근을 차단함으로써 보안성이 크게 향상되었습니다.
수동 배포로 인한 휴먼 에러 및 비효율성 문제
문제: 기존에는 수동으로 VM에서 스크립트를 실행하여 배포해야 했기 때문에 휴먼 에러가 발생할 위험이 높았고, 배포 과정이 비효율적이었습니다.
해결 과정:
CI/CD 자동화 구축: GCP CloudBuild를 사용하여 CI/CD 파이프라인을 구축하고, Cloud Run을 통해 컨테이너 환경에서 자동 배포되도록 전환했습니다. 이를 통해 수동 작업을 제거하여 배포 효율성을 높였습니다.
결과: 휴먼 에러가 감소하고, 배포 시간이 단축되었으며, 배포 프로세스의 안정성이 크게 향상되었습니다.
차세대 통합 학습 관리 시스템(LMS) 개발
웅진씽크빅
2022.01. ~ 2023.03.
[소개] 기존의 모놀리식 LMS 시스템을 유아, 초등, 중학 서비스로 구분하여 마이크로서비스 아키텍처(MSA)를 도입했습니다. MyBatis에서 JPA로의 전환, 쿼리 최적화, 배포 자동화를 통해 시스템 확장성과 유지보수성을 개선했습니다.
[역할]
각 서비스가 독립적으로 운영될 수 있도록 MSA 구조를 적용하여 확장성 향상
MyBatis에서 JPA로 전환하여 유지보수 생산성 향상
EXPLAIN 쿼리 분석을 통해 데이터베이스 인덱스 최적화 및 슬로우 쿼리 개선
CI/CD 파이프라인을 AWS CodeDeploy로 구축해 배포 자동화 및 운영 안정성 강화
[문제 해결 사례]
모놀리식 구조로 인한 성능 저하 문제
문제: 기존 LMS 시스템은 유아, 초등, 중학 서비스를 단일 모놀리식 애플리케이션으로 운영하여, 무거운 이력 조회 쿼리가 다른 서비스에까지 영향을 미치며 성능 저하 문제를 야기했습니다.
해결 과정:
마이크로서비스 아키텍처(MSA) 도입: 각 서비스를 독립적인 마이크로서비스로 분리하여 유아, 초등, 중학 서비스를 개별적으로 운영할 수 있도록 했습니다. 이를 통해 서비스 간 간섭을 제거하고 확장성을 크게 향상했습니다.
REST API 및 게이트웨이 적용: 각 서비스 간 통신을 REST API로 구현하고 게이트웨이를 통해 중앙 집중식 관리와 독립성을 확보하여 유지보수성과 확장성이 향상되었습니다.
결과: 무거운 쿼리로 인한 성능 저하 문제를 해결하고 각 서비스가 독립적으로 운영될 수 있도록 최적화하여 시스템의 안정성 및 사용자 경험이 크게 향상되었습니다.
슬로우 쿼리 및 인덱스 최적화 문제
문제: 데이터베이스 쿼리의 성능이 저하되어 특정 서비스 사용 시 지연이 발생했습니다. 특히 인덱스가 제대로 적용되지 않아 슬로우 쿼리가 발생했습니다.
해결 과정:
쿼리 성능 분석: EXPLAIN 쿼리를 사용해 인덱스 적용 상황을 분석하고 성능이 저하되는 슬로우 쿼리를 최적화했습니다.
결과: 쿼리 성능이 개선되어 서비스 응답 속도가 향상되었고, 전체 시스템의 처리 효율이 높아졌습니다.
수동 배포로 인한 비효율성 및 휴먼 에러 문제
문제: 기존 배포 방식은 FTP를 통해
.class
파일을 수동으로 EC2 서버에 업로드하는 방식으로, 시간이 많이 소요되고 휴먼 에러 발생 가능성이 높았습니다.
해결 과정:
배포 자동화: 수동 배포 방식을 AWS CodeDeploy를 활용한 CI/CD 파이프라인으로 전환해 배포 과정을 자동화했습니다. 이를 통해 배포 시간 단축 및 안정성을 확보할 수 있었습니다.
결과: 자동화된 배포 프로세스를 통해 배포 시간이 단축되고 오류 발생이 감소하여 운영 안정성이 크게 향상되었습니다.
스마트올 중학 서버 유지보수 및 개발
웅진씽크빅
2021.08. ~ 2021.12.
[소개] MSA 환경에서 스마트올 서비스의 서버를 유지보수하고, 관리자 백오피스를 개발하여 효율성을 높였습니다. 회원권 실시간 배치 시스템 개발과 데이터 타입 문제 해결을 통해 시스템의 가독성과 유지보수성을 향상했습니다.
[역할]
MSA 환경에서 회원권 실시간 배치 시스템 개발 및 운영
기존 데이터베이스에서 조회한 데이터를 Object 타입으로 처리해 데이터 타입이 불명확한 문제를 ORM 도입으로 해결, 명확한 데이터 타입 관리와 코드 가독성, 유지보수성 향상
스마트올 중학 서비스 관리자 백오피스 개발
[문제 해결 사례]
10만 이상의 회원권을 처리하는 배치 시스템에서의 동시성 문제
문제: 회원권 관리 배치 시스템을 운영하면서 동시성 문제로 인해 회원권이 중복 가입되는 현상이 발생했습니다.
해결 과정:
비관적 락(Pessimistic Lock) 도입: 동시성 제어를 위해 비관적 락을 적용하여 회원권 데이터가 중복 등록되는 문제를 방지했습니다.
결과: 동시성 문제가 해결되면서 회원권 중복 가입 문제를 예방하여 시스템의 안정성이 향상되었습니다.
데이터 타입 불명확성 문제 해결을 위한 ORM 도입
문제: 기존 데이터베이스 조회 데이터가 Object 타입으로 관리되어, 데이터 타입 확인이 어려워 가독성과 유지보수성에 어려움이 있었습니다.
해결 과정:
ORM 도입: 명확한 데이터 타입 관리가 가능하도록 ORM을 도입하여 코드의 가독성과 유지보수성을 개선했습니다. 이를 통해 각 데이터의 타입을 명확히 정의하고, 오류 발생 가능성을 줄였습니다.
결과: 데이터 타입이 명확하게 관리되어 코드 가독성이 높아지고, 유지보수성이 크게 향상되었습니다.
1,000만 건 이상의 사용자 학습 데이터 마이그레이션
문제: 스마트올 서비스의 중학 학습 데이터를 새로운 시스템으로 마이그레이션할 필요가 있었습니다.
해결 과정:
데이터 마이그레이션 최적화: 1,000만 건의 대량 데이터를 안정적으로 이전하기 위해 데이터 마이그레이션 프로세스를 최적화하고, 성능과 데이터 무결성을 고려한 전략을 설계하여 적용했습니다.
결과: 대량 데이터 마이그레이션이 성공적으로 완료되어 시스템 이전 후에도 일관성과 성능이 유지되었습니다.
BookNote
개인 프로젝트
2024.08. ~ 진행 중
BookNote
책을 읽는 동안 떠오르는 다양한 생각들을 손쉽게 기록하고, 체계적으로 정리할 수 있는 웹 서비스입니다.
url: BookNote
README: Booknote_Wiki
GitHub
기능 구현
Access Token
과Refresh Token
을 이용하여 인증처리
Naver Open API
를 사용하여 주어진 검색어(query
)로 책 정보를 검색Redis를 통해 캐시된 데이터를 우선 확인하고, 없을 경우 외부 API를 호출하여 데이터를 가져오는 로직으로 성능을 최적화
링크: 활동 기록 조회 기능
사용자 활동을 실시간으로 기록
사용자의 활동 로그를 다양한 필터(기간, 활동 유형 등)로 조회
비동기적으로 로그를 처리하여 시스템 성능에 영향을 주지 않음
링크: 책순서 업데이트 기능
실시간 책 순서 관리: 사용자가 책의 순서를 변경할 때 해당 정보가 즉시 Redis에 캐싱 일정 주기로 캐시된 데이터가 데이터베이스와 동기화
비동기 데이터 동기화: Redis 캐시를 활용하여 책 순서를 즉시 반영하고, 주기적으로 데이터베이스에 반영함으로써 시스템 성능에 영향을 최소화
포트폴리오
첨부파일
교육
충북대학교
대학교(학사) | 정보통신공학
2013.03. ~ 2021.02. | 졸업
대외활동
삼성 청년 소프트웨어 아카데미
삼성 청년 소프트웨어 아카데미
삼성전자 주관 개발자 양성 교육 과정 수료
기본적인 CS 지식과 알고리즘을 학습하여 문제 해결 능력 향상
2개의 프로젝트에서 팀 리더 역할 수행
모든 프로젝트에서 우수상 수상
프로젝트 진행 중 프론트엔드, 백엔드, 인프라 전반을 경험
네이버 부스트 캠프
네이버 부스트 캠프
네이버 커넥트 주관 웹 개발자 양성 교육 과정 수료
JavaScript와 Node.js 학습
CS 기본 지식 학습
미션 기반의 코드 리뷰 중심 교육 진행
삼성 청년 SW 아카데미 자율 프로젝트 우수상
삼성 청년 소프트웨어 아카데미
삼성 청년 SW 아카데미 공통 프로젝트에서 1등 수상
자격증
정보처리기사
기사 | 한국산업인력공단
2019.11.