웹으로 보기: https://choo.oopy.io/resume/kr
•
팀 리더 겸 백엔드 리드 개발자로 참여해 Google Solution Challenge 대회에서 세계 100위 안에 드는 성과를 냈습니다.
•
클린 아키텍처에 입각한 레거시 코드 리팩토링 경험과 실제 클라이언트와의 주기적 소통을 통해 얻은 요구사항에 바탕한 레거시 업데이트 경험이 있습니다.
•
읽기/쓰기 DB를 분리해 DB 부하를 줄였고, 쿼리 별 최적의 인덱스를 설정해 2,000만 건의 데이터에 대해 쿼리 성능을 5초에서 0.001초로 개선한 경험이 있습니다.
•
배포/모니터링/로깅 인프라를 설계하고 구축해 팀의 개발 생산성을 높였습니다. 보안과 SPOF를 고려해 private subnet에 2대의 WAS를 운영하며 무중단 배포를 지원한 경험이 있습니다.
•
개발 경험을 기록하고 공유하는 것을 좋아해 개발 블로그에 120여 개의 기술 포스트를 작성했고, 개발 커뮤니티에서 스피커, 교육 콘텐츠 제작 활동을 했으며, 프로젝트에서 코드 리뷰를 주도해본 경험이 있습니다.
1. 수상
카카오모빌리티 넥스트모빌리티 해커톤 : 네모톤 본선 참가
2023.08.31 | 정각 프로젝트 상위 10팀 안에 들어 본선 참가 | 카카오모빌리티
Google Solution Challenge Global Top 100
2023.05.05 | BeachCombine 프로젝트 세계 상위 100위 선정되어 수상 | Google Solution Challenge
GDSC Korea Winter Cup 최우수상
2023.02.24 | BeachCombine 프로젝트 한국 44팀 중 2위 수상 | Google Developer Student Clubs Korea
2. 사이드 프로젝트
총대마켓
지역 기반 공동구매 서비스
우아한테크코스에서 진행한 프로젝트로, 대규모 실시간 트래픽을 처리할 수 있는 고가용성의 확장 가능한 시스템을 예측하고 적용해보며 클린 아키텍처의 장점을 직접 체감할 수 있었습니다.
A/B 테스트, 로그 수집 등 사용자 런칭을 위해 다방면으로 고민하며 커머스 도메인에 대한 관심을 키워나갈 수 있었습니다.
•
관련 기술 : Java, SpringBoot, SpringData, MySql, AWS EC2/S3/CloudFront/RDS/CloudWatch, Nginx, Docker, Github Actions
2024.07 ~ 2024.09
백엔드
크루위키
우아한테크코스 크루들의 재밌는 정보를 아카이빙 하기 위해 만든 서비스
우아한테크코스 교육과정과 별개로 크루들과의 추억을 간직하고자 진행한 프로젝트입니다.
80명 넘는 크루들이 사이트를 이용하며, 정보 공유가 이뤄졌습니다.
•
관련 기술 : Java, SpringBoot, SpringData, MySQL, AWS EC2/S3
2024.03 ~ 2024.05
백엔드
•
•
해킹을 당해 못쓰게 된 AWS 계정을 새 계정으로 마이그레이션하며 2FA, Bastion Host 같은 보안 요소 적용
U’R
드래그 앤 드랍 기능이 탑재된 url 관리 서비스
DDD 연합 동아리에서 진행한 프로젝트입니다.
검색 엔진 개발을 하시던 분과 작업하며 데이터 구조 관련해 다양한 인사이트를 얻을 수 있었습니다.
•
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, AWS EC2/RDS/S3, Docker, Github Actions
2023.06 ~ 2023.08
백엔드 리드
정각
출발시간 기반 일정 및 모임 관리 서비스
네모톤(단기 해커톤)에서 진행한 프로젝트입니다.
모빌리티 도메인 관련해 MVP를 구상할 때 고려할 점을 배울 수 있었습니다.
•
관련 링크 : 깃허브
•
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, AWS EC2/RDS/S3, Docker, Github Actions
2023.08.
31
백엔드
•
카카오 모빌리티 미래 운행정보 길찾기 API 활용해 도착 시간에 맞는 출발 시간 계산하는 로직 구현
•
하루라는 단 기간에 보일러 플레이트 구축부터 배포까지 빠르게 서비스를 구축해보는 경험
Beach Combine
AI를 통한 해양 쓰레기 청소 기록 서비스
Google Solution Challenge(장기 해커톤)에서 진행한 프로젝트입니다.
•
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, Redis, Google Cloud CE/Storage/SQL, Docker, Github Actions
2023.02 ~ 2023.05
백엔드 리드
•
•
•
•
•
구글 임직원 멘토링 통해 유저 플로우 개선 및 기획 확장
Atties
예술작품 경매 플랫폼
버려지는 졸업작품들을 모아 판매하는 수익 구조가 그려져 외부 팀원들을 모집해 진행한 프로젝트입니다.
•
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, Redis, AWS EC2/RDS/S3/Route53, Docker, Github Actions
2022.12 ~ 2023.02
백엔드 리드
•
•
DTO 조회 방식, MVC 방식에서 DTO 생성 위치, builder 패턴, enum, 연관관계 메서드 활용 등의 효율성을 따져보고 최적화된 방식을 선택해 프로젝트에 적용
•
성능 최적화를 위한 복잡한 쿼리를 SQL문으로 먼저 짜보고, 이를 QueryDSL로 옮겨 편리하게 구현하는 경험
•
•
아이디 찾기 메일 발송, 취향 맞춤 작품 추천 알고리즘, 경매 날짜 스케줄링 등 주요 비즈니스 로직 구현 경험
3. 경력
(주)에프아이솔루션
응용 소프트웨어 개발 및 공급업(40~50명, 개발팀 10명)
학교 연계 인턴십으로 총 6개월 근무했습니다. 경찰청 지문 등 사전등록제 현장방문 등록 사업 관련 개발을 담당했습니다.
•
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, AWS EC2/RDS/S3, Nginx
2~30인 규모 사내 콜센터 부서가 사용하는 백오피스(상담 플랫폼) 유지보수
2023.06 ~ 2023.12
백엔드
•
레거시 코드 분석 및 리팩토링
◦
한 테이블의 90개가 넘는 컬럼을 별도 테이블로 분리해 sparse한 칼럼을 없애고, 읽기 전용 테이블을 따로 분리하는 등 데이터베이스 스키마 재설계 후 교체해 쿼리 성능 증가
◦
◦
◦
◦
잘못된 레거시 로직 수정해 기본 예외 동작하게 하고, 각기 다른 예외 커스텀을 일관된 방식으로 통일해 팀 내 규칙 정리함
•
레거시 이슈 대응 및 요구사항 반영
◦
메일 전송용 공문을 서버에 직접 올리는 대신 S3에 저장하게 로직 수정해 불필요한 리소스 제거
◦
세션 방식을 토큰 방식으로 변경해 타 서비스와의 통합 로그인 구축
43,000개의 어린이집/유치원의 교사들이 경찰청 지문 등록 사업에 대한 신청서 등록할 수 있는 웹 사이트 개발
2023.06 ~ 2023.07
백엔드
•
신규 경찰청 팀(백엔드 2인, 프론트엔드 2인) 체제 구축
◦
초기 멤버로 협업 및 프로젝트 환경 구축에 기여
◦
클라이언트와 주기적으로 소통하며 요구사항 문서화
◦
Java 17, SpringBoot3 도입 (시큐리티 설정, PK 생성 전략 변경)
4. 자기소개
1.
다양한 사람들과 심도 있는 의견을 주고받는 걸 즐깁니다.
개발 동아리, 회사, 우아한테크코스 등 여러 집단에서 다양한 사람들과 소통하며 논리를 유연하게 주고받는 기술을 발전시켜왔습니다. 특히 우아한테크코스에서 크루들과 깊이 있는 토론을 통해 가파르게 성장했고, 함께한 사람들로부터도 긍정적인 피드백을 자주 받았습니다.
2.
확장에 열려 있는 설계에 관심이 많습니다.
리팩토링과 테스트 과정에서 겪던 구조적 문제들이 클린 아키텍처 개념 속에서 명쾌히 설명되는 걸 경험했습니다. 이후 발표 세션을 따로 기획 할 정도로 클린 아키텍처에 매료되었고, 프로젝트에도 이를 적용해 확장에 용이한 구조로 리팩토링했습니다.
변경에는 닫혀있으면서 확장에는 열린 코드를 지향하며, 다양한 기술에 대해 오픈 마인드를 유지하고 있습니다. 개발에 있어서 은탄환은 없다고 생각하지만, 클린 아키텍처라는 대전제에 기반해 다양한 기술을 효과적으로 수용할 수는 있다고 믿습니다.
3.
협업 시 쌍방향 소통을 통해 함께 성장하려고 노력합니다.
일방적인 소통만으로는 한 명만 성장하는 팀이 된다는 걸 알고, 모두가 성장하는 팀을 만들기 위해 쌍방향 소통을 촉진하는 그라운드룰을 만들어보았습니다. 또한 일방적인 설명보다 상대가 알고 싶은 게 무엇인지 계속해 질문하며 소통하려 노력합니다.
5. 아티클
클린 아키텍처에 입각한 레거시 코드 리팩토링
프로젝트에서 마주한 문제(DB 의존 설계)를 Clean Architecutre에 대한 통찰에 기반해 풀어나갔습니다.
GCP 배포 A to Z 시리즈
Google Solution Challenge 대회 준비 당시 GCP 배포 관련한 국내 포스팅이 적고, 전체 과정이 통합된 포스팅이 없다는 게 아쉬워 GCP 배포 전 과정을 정리한 기술 포스트를 작성했습니다. 배포를 처음 하는 이들도 따라할 수 있게 최대한 많은 GUI 사진들과 설명들을 넣어 작성했고, 함께 대회 준비하는 타 팀들에게 공유해 도움을 주었습니다.
heap out of memory 에러 해결과 메모리 누수 검사
JavaScript Heap Out Of Memory 에러를 해결하며, 메모리 누수 검사를 진행했습니다. 기존의 메모리 누수 검사 관련한 포스팅들이 통일되지 않았다 느꼈습니다. 여러 검사 방법들을 정리하고 각각을 직접 사용하며 느낀 장단점을 정리한 기술 포스트 작성했습니다.
6. 활동
전국 연합 IT 동아리 DDD 9기
서버 멤버
2023.05 ~ 2023.08 (4개월)
•
격주마다 개발자, 디자이너 간 네트워킹 진행하고 프로덕트 개발
•
교내 웹 스터디의 150여 명의 수강생에게 제공할 HTML, CSS, JS 교육 자료 검수
•
교내 백엔드 스터디의 40여 명의 수강생에게 제공할 Spring 교육 자료 검수
•
격주로 열린 교내 개발 세미나에 스피커/리스너로 참여해 최초의 교내 개발 커뮤니티 형성에 기여
◦
Agile과 Waterfall 비교 설명과 실제 프로젝트를 진행하며 느낀 각각의 장단점 발표
•
매주 Spring, Spring Boot, JPA에 대한 책/강의를 학습하고 발표하는 백엔드 세미나 수료
•
Node.js, Express, MongoDB, AWS EC2, S3, PM2에 대해 배우는 8회차 세미나 수료
7. 교육
홍익대학교 컴퓨터공학과 / 2019.03 ~ 2024.08
전공 평점 4.00 / 4.5, 전체 평점 3.84 / 4.5
8. 기술 역량
Strong은 굵은 글씨, Konwledgeable은 얇은 글씨입니다.
Backend
•
Spring Boot, Spring Data JPA, Spring Security, Spring MVC
•
JPA, Querydsl
•
Junit5, Jest
•
Node.js, Express
Frontend
•
HTML5, CSS3, Bootstrap
•
jQuery
DevOps
•
AWS EC2, S3, RDS, Route 53, CloudWatch, ELB
•
Google Compute Engine, Cloud Storage, Cloud SQL
•
Docker Container
•
Github Actions
•
MySQL, MongoDB, Redis, H2, Cloud Firestore
Language
•
Java, JavaScript, TypeScript, C++, C, Python