미리보기
기본 정보
다양한 프로젝트 경험과 폭넓은 기술 역량을 갖춘 백엔드 엔지니어, 곽승민입니다 😊 👀 Java와 Spring Boot를 주로 사용해요. 🖥️ 서비스 기획부터 배포까지의 프로젝트 전체 사이클을 경험한 덕분에 전체적인 서비스 흐름을 빠르게 이해하고 효율적으로 관리할 수 있어요. 📚 새로운 기술을 습득하고 적용해서 문제를 해결하는 능력을 갖추고 있어요. 🧑🤝🧑 팀워크와 협업을 통해 프로젝트를 원활하게 진행하고, 문제를 공유해 함께 고민하면서 최적의 해결책을 도출해요.
기술 스택
Java, Spring Boot, JPA, Google Cloud Platform, Kubernetes, MySQL, Docker, mybatis, querydsl, Spring Batch
경력
케어마인드
개발팀
2020.12. ~ 2024.04. (3년 5개월)
🪞 성형 후 외상관리 서비스 '에포터'
- API 서버 Java 전환 담당
- 에포터 메인 서비스 및 백오피스 API 유지보수 및 신규 기능 개발
- GCP 인프라 구성 및 운영 담당
- 배포 프로세스 구축
- 서버 GKE 전환
- Vue로 구현된 파트너 서비스 클라이언트 개발 참여
- 안드로이드 및 iOS 네이티브 앱 유지보수 참여
🔍 아토피 케어 서비스 '아토닥'
- API 신규 개발 및 유지보수
- GCP 인프라 구성 및 운영 담당
- 배포 프로세스 구축
- 네이티브 앱 개발 참여
코노랩스
개발팀
2019.12. ~ 2020.11. (1년)
🗓 AI 일정관리 비서, Kono
- API 유지보수
- 서비스 개선 및 신규 기능 개발
📚 목표 관리 및 자기 계발 서비스
- 신규 API 개발 참여
프로젝트
에포터 '뷰티크' 서비스 개선
케어마인드
2024.01. ~ 2024.04.
💫 Summary
에포터 주요 서비스인 '뷰티크' 서비스의 전체 개편과 사용자들이 서비스를 지속적으로 사용하며 즐길 수 있는 컨텐츠를 제공하고, 사용성을 개선하기 위한 프로젝트
💐 Works
'뷰티크' 내 신규 서비스 '뷰티 메이트' 기획 참여
신규 API 개발 및 DB 모델링
JPA 도입
🌱 What I Learned
서비스 현황 파악을 통한 문제점 및 원인 도출
JPA 연관관계 매핑 및 연관관계 관리(즉시 로딩, 지연 로딩)
💫 What I Solved
뷰티크' 서비스 핵심 지표인 '기록 완료율'이 23% 증가했습니다.
AI 모델을 서빙하는 AI API와 서비스 API 간 통신 로직에 대한 문서가 없어, 관련 작업 진행 시마다 담당자가 히스토리 파악에 많은 리소스를 낭비하고 있었습니다. 이를 해결하기 위해 AI팀과 협력하여 각 서버의 처리 로직을 정리하고 문서화하여 작업 효율성을 향상시켰습니다.
프로젝트에 JPA를 도입하여, 기존 MyBatis를 사용할 때 테이블 구조 변경 시 관련 쿼리를 모두 수정해야 했던 번거로움을 줄였고, CRUD 작업과 관련된 쿼리 중복을 줄여 유지보수 비용과 시간을 절감했습니다. 또한 이 과정에서 JPA를 빠르게 학습하고 프로젝트에 적용할 수 있었습니다.
주치의 피드백 서비스 채팅 시스템 구축
케어마인드
2023.08. ~ 2023.11.
💫 Summary
에포터 서비스 중 제휴 주치의와 상담할 수 있는 '주치의 피드백' 서비스의 채팅 시스템을 설계하고 구현한 프로젝트
💐 Works
채팅 시스템 DB 모델링
채팅 시스템 설계 및 API 구현
🌱 What I Learned
채팅 시스템 동작 방식
Polling 기법, WebSocket
💫 What I Solved
일정 시간 동안 상담 진행이 없을 시 종료 처리 로직을 Spring Batch를 이용하여 구현했습니다.
처음에는 새 메시지가 있는지 확인하는 방법으로 DB hitting 방식을 고려했습니다. 하지만 팀원들과의 논의를 통해 DB hitting 방식의 데이터베이스 부하 문제를 인식했고, 최종적으로 polling 기법을 적용하여 구현했습니다.
사내 인증-인가 시스템 구축
케어마인드
2023.08. ~ 2023.09.
💫 Summary
OAuth 2.0을 기반으로 한 사내 인증-인가 시스템 구축 프로젝트
💐 Works
인증 코드 발급, 토큰 발급 및 검증 로직(인증 서버 로직) 구현
🌱 What I Learned
OAuth2.0의 개념과 동작 방식
기존 인증 방식으로 동작하는 서비스에 영향을 미치지 않고, 새로운 인증 방식과 기존 인증 방식이 동시에 동작하도록 하는 방법
💫 What I Solved
JWT 토큰 방식을 이용한 인증 방식을 적용했습니다.
서버 내 사용자 인증, 인가 검증 및 활용이 여러 곳에서 처리되고 있어 유지보수와 활용이 어려웠던 상황이었는데, 이 프로젝트를 통해 일원화된 인증-인가 시스템을 도입할 수 있도록 개선되었습니다.
에포터 '회복실' 서비스 개편
케어마인드
2023.07. ~ 2023.08.
💫 Summary
회복중인 사용자에게 필요한 컨텐츠 제공을 위한 '회복실' 서비스 개편 프로젝트
💐 Works
회복 부위 인식 AI 모델 도입 및 API 개발
회복 이미지 인증 처리
🌱 What I Learned
API 비동기 처리
GCP Signed Url 적용 방법
💫 What I Solved
AI 모델에서 회복 부위 인식 이미지 생성 시에 2초 정도 소요되는데, 연결을 유지한 채로 결과를 기다리고 있어 요청이 몇 개만 동시에 들어와도 처리 시간이 늘어나는 문제가 있었습니다. 이미지 요청 시 즉시 응답을 주고, 이미지 생성이 완료되면 API 서버로 결과를 보내 비동기적으로 처리하도록 개선하였습니다.
회복 이미지는 본인 접근 가능해야 하기 때문에 GCP Signed URL을 활용하여 제한된 시간 동안만 유효한 URL을 생성하도록 개선했고, 이미지 접근 제어를 강화했습니다.
AI API와의 통신에서 Request/Response 형식이 일관되지 않아 각 요청에 맞는 객체를 모두 만들어야 하는 번거로움이 있었고, 이를 해결하기 위해 JSON 형식을 정규화하여 통일했습니다.
에포터 - 광고 시스템 서버 통합
케어마인드
2023.03. ~ 2023.04.
💫 Summary
별도로 운영되고 있던 광고 시스템 서버와 '에포터' 서비스 서버 통합 프로젝트
💐 Works
GCP 인프라 이전
사용자 인증 통합
광고 성과 보고서 기능 API 개발
💫 What I Solved
인프라 비용 및 운영 비용을 약 19% 감소시켰습니다.
한 GCP 프로젝트에 위치한 API에서 다른 GCP 프로젝트에 위치한 비공개 DB에 접근할 수 있도록 Cloud SQL Proxy를 활용하여 다른 프로젝트에서 특정 DB에 접근하기 어려웠던 문제를 해결했습니다.
두 서버에서 각각 사용하고 있는 서로 다른 사용자 인증 방식을, AOP를 활용하여 하나의 서버에서 각 인증 방식을 적용할 수 있도록 구현했습니다.
‘아토닥’ 서비스 신규 런칭
케어마인드
2022.07. ~ 2022.09.
💫 Summary
아토피 병변 부위를 촬영하고 증상을 기록하면 AI가 중증도를 예측하여 성인 아토피 중증 환자들을 위한 맞춤형 케어 서비스를 제공하는 인공지능 기반 아토피 중증도 예측 및 케어 앱 서비스 신규 런칭 프로젝트
💐 Works
서비스 API 신규 개발 및 유지보수, 자사 AI 모델 적용
GKE 서버 구성 등 인프라 구축
GCP 내 배포 프로세스 구축
React Native로 구성된 앱 개발 참여
🌱 What I Learned
프로젝트 초기 구축 및 로직 구현, 배포
JWT를 이용한 사용자 인증 방식 적용
외부 API 연동을 통해 외부 데이터를 서비스 DB 내부 스키마에 맞게 모델링하는 방법
데일리 스크럼을 통한 업무 블로커 제거 및 진행 현황 체크의 중요성
💫 What I Solved
사용자 인증 로직을 설계할 때 Sequence Diagram을 활용해 인증 로직 흐름을 정리하고, 이를 통해 코드 작업 시 수정을 줄여 작업 속도를 향상시켰습니다.
테스트 코드를 작성하여 배포 전 로직에 빠진 부분이 있는지 간단히 테스트 가능하도록 했으며, Spring RESTDocs를 활용해 테스트 코드로 API 문서를 자동으로 생성해 활용했습니다.
에포터 서비스 푸시 시스템 개선
케어마인드
2022.06. ~ 2022.07.
💫 Summary
에포터 서비스 앱 푸시 기능 정상화 및 앱 푸시 전송 시스템 개선 프로젝트
💐 Works
디바이스 토큰 저장 및 앱 푸시 동작 로직 수정
안드로이드 및 iOS 네이티브 코드 수정 및 배포
사용자 타겟팅 푸시 전송 기능 구현
💫 What I Solved
앱 푸시 정상화로 DAU가 60% 증가하고, 푸시 오픈율이 200% 증가했습니다.
안드로이드 앱 푸시가 전송되지 않던 주요 원인은 네이티브-웹뷰 간 디바이스 토큰이 전달되지 않는 것이었습니다. 네이티브 코드에서 웹뷰 자바스크립트 코드를 호출하여 파라미터로 토큰을 넘겨주는 로직을 수정하여, 서버에 토큰이 올바르게 저장되도록 했습니다.
iOS 앱 푸시는 기존의 Apns 방식을 Firebase를 활용한 방식으로 전송하도록 개선했습니다.
푸시를 눌렀을 때 앱이 켜지면 해당 페이지로 바로 이동해야 했으나, 이 기능이 제대로 동작하지 않았습니다. 푸시 전송 시 ‘target’ 이라는 값을 주어 넘겨주고, 네이티브 단에서 푸시를 수신하면 해당 값을 확인해 적절한 페이지로 웹뷰를 띄우도록 하여 문제를 해결했습니다.
Firebase의 주제 구독(topic subscribe) 방식을 사용하여, 특정 조건에 따라 사용자 디바이스 토큰을 특정 주제에 구독시키고, 각 주제에 맞게 사용자 타겟팅 푸시를 전송할 수 있는 기능을 구현했습니다.
GKE 전환 및 자동 배포 프로세스 구축
케어마인드
2022.05. ~ 2022.06.
💫 Summary
Google Compute Engine(GCE) 인스턴스와 로드밸런서를 이용해 운영하던 서버를 Google Kubernetes Engine(GKE)으로 전환하고, 프로젝트 빌드 및 배포를 자동화 한 프로젝트
💐 Works
Google Kubernetes Engine 도입
Cloud Build, Jenkins를 활용한 빌드 및 배포 자동화 프로세스 구축
💫 What I Solved
GCE 인스턴스로 서버를 운영하면서, 서버 장애로 인한 서비스 중단과 수동 재배포의 번거로움을 해결하고자 GKE를 도입했습니다. 이를 통해 서비스의 안정성을 높이고, 관리 효율성을 향상시켰습니다.
Dockerfile 대신 Jib을 이용하여 컨테이너 이미지를 생성해 레지스트리에 업로드하는 방식을 통해 배포 효율성을 향상시켰습니다.
수동 배포로 인한 문제를 해결하기 위해 Cloud Build와 Jenkins를 활용하여 빌드 및 배포 자동화 프로세스를 구축했습니다. 이로 인해 배포 시간이 단축되고, 운영 효율성이 향상되었습니다.
관심 뉴스 모아보기 앱 '뉴즈(Newz)'
(기타) Google Developer Group Songdo / 뉴모아
2022.12. ~ 2023.01.
💫 Summary
내가 관심있는 뉴스 기사를 키워드 기반으로 모아보고, 기사 내용을 요약하여 한 눈에 살펴볼 수 있는 앱 서비스
💐 Works
Flutter를 활용한 안드로이드 앱 개발
온보딩 및 키워드 선택 페이지 구현
서버의 로그인 인증 로직과 로그인 여부에 따른 페이지 라우팅 처리 담당
서버 개발
Java Spring Boot를 이용한 API 서버 개발
JWT 토큰 기반 사용자 인증 구현
Swagger를 이용한 API 문서화
Flask를 이용한 기사 요약 서버 개발
네이버 검색 API와 Newspaper 라이브러리를 활용하여 기사 내용 수집
Gensim 라이브러리를 이용하여 내용 요약 API 구현
💫 What I Solved
로그인 후 반환된 사용자의 정보를 저장하고, 전역으로 사용해야하는 부분에서 상태 관리를 적용하였습니다.
기사 내용을 크롤링하는 대신 네이버의 검색 API를 활용하여 기사 링크를 가져와 해당 링크의 기사 내용을 수집할 수 있도록 구현하였습니다.
내용 요약 라이브러리인 'Gensim'을 이용한 파이썬 API를 구성하여 사용하였습니다.
에포터 어드민(백오피스) 서비스 개선
케어마인드
2021.11. ~ 2022.02.
💫 Summary
사내 멤버들이 사용하는 어드민(백오피스) 서비스의 문제점을 파악하고, 이를 개선해 불필요한 업무를 줄여 서비스 모니터링과 지표 파악이 용이하도록 개선한 프로젝트
💐 Works
Node.js로 구성된 API 서버의 Java 전환
운영 지표 추출 자동화
비효율 쿼리 개선 및 일부 DB 스키마 개선
💫 What I Solved
운영팀의 요구사항을 분석하고 필요한 기능을 리스트업하여 이를 바탕으로 개발을 진행했습니다.
비효율 쿼리 개선을 통해 사용자 관리 및 데이터 검색 시 평균 3-4초가 걸리던 검색 속도를 1초 이내로 단축시켰습니다. 이로 인해 데이터 검색 및 조회 효율성이 향상되었습니다.
수동으로 DB에서 추출하여 전달하던 운영 지표 데이터를 Spring Batch를 활용해 서버에서 주기적으로 가공 및 저장하도록 구현했고, 이를 어드민에서 상시 확인할 수 있게 되었습니다.
에포터 및 파트너 서비스 안정화
케어마인드
2020.12. ~ 2021.03.
💫 Summary
에포터 및 파트너센터 API 서버를 Java로 전체 전환하고, 에포터 웹사이트를 SPA(Single Page Application)로의 전환을 통한 서비스 안정화 프로젝트
💐 Works
에포터 및 파트너 서비스 API Java로 전체 전환
에포터 서비스 클라이언트 SPA 전환을 위한 토대 마련
파트너 서비스 클라이언트(웹페이지) 개발 참여
Vue.js로 구성된 파트너 서비스 클라이언트 개발 참여
AWS Code Pipeline을 이용한 배포 자동화 구축
💫 What I Solved
Google Compute Engine에서 AWS S3의 정적 호스팅 방식으로 클라이언트를 이전하여 인스턴스 운영 비용을 절감했습니다.
Java로의 API 전환 과정에서 클라이언트와의 호환성을 유지하기 위해 Response 형식은 이전과 동일하게 하여 클라이언트 부분 수정 없이 진행했습니다.
비효율 DB 쿼리를 개선하고, 인덱스를 추가하여 데이터 로딩 속도를 단축시켰고, 이로 인해 사용자 경험이 향상되었습니다.
목표관리 및 자기계발 신규 서비스 개발 참여
코노랩스
2020.07. ~ 2020.11.
💐 Works
CRUD, 사용자 인증 등 서비스에 필요한 REST API 구현
FCM을 이용한 앱 푸시 알림 구현
테스트 코드 작성 및 Spring REST Docs를 이용한 API 문서화
🌱 What I Learned
RESTful API의 개념과 이를 이용하여 서비스에 필요한 API를 구현하는 방법
Spring Boot에서 JUnit을 이용해 테스트 코드를 작성하는 방법
REST Docs를 이용하여 테스트 코드를 통해 API 문서를 생성하는 방법
AI 일정관리 비서 Kono API 유지보수
코노랩스
2019.12. ~ 2020.11.
💫 Summary
원하는 캘린더 서비스 기반으로 슬랙, 이메일을 통해 쉽고 간편하게 일정을 조율하고 관리하는 인공지능 일정관리 서비스
💐 Works
버그 수정 및 코드 리팩토링 등 Kono API 유지보수
Kono 서비스 개선 및 신규 기능 개발
🌱 What I Learned
서비스의 주요 기능을 새로 구현하기 보다는, 기존 코드를 파악하고 버그를 찾아내어 유지보수하는 것
기존 코드 로직을 따라가면서 해당 기능이 어떻게 동작하는지 파악하고, 이론적인 코드가 아닌 실제 서비스 중인 실무 코드를 파악하고 분석하는 방법
포트폴리오
교육
선문대학교
대학교(학사) | 컴퓨터공학
2016.03. ~ 2020.02. | 졸업
인천해송고등학교
고등학교
2013.03. ~ 2016.02. | 졸업