Search

추서연 | 백엔드 개발자

웹으로 보기: https://choo.oopy.io/resume
팀 리더 겸 백엔드 리드 개발자로 참여해 Google Solution Challenge 대회에서 세계 100위 안에 드는 성과를 냈습니다.
클린 아키텍처에 입각한 레거시 코드 리팩토링 경험과 실제 클라이언트와의 주기적 소통을 통해 얻은 요구사항에 바탕한 레거시 업데이트 경험이 있습니다.
읽기/쓰기 DB를 분리해 DB 부하를 줄였고, 쿼리 별 최적의 인덱스를 설정해 2,000만 건의 데이터에 대해 쿼리 성능5초에서 0.001초로 개선한 경험이 있습니다.
배포/모니터링/로깅 인프라를 설계하고 구축해 팀의 개발 생산성을 높였습니다. 보안과 SPOF를 고려해 private subnet에 2대의 WAS를 운영하며 무중단 배포를 지원한 경험이 있습니다.
개발 경험을 기록하고 공유하는 것을 좋아해 개발 블로그에 120여 개의 기술 포스트를 작성했고, 개발 커뮤니티에서 스피커, 교육 콘텐츠 제작 활동을 했으며, 프로젝트에서 코드 리뷰를 주도해본 경험이 있습니다.
Github: ChooSeoyeon
개발 블로그: Choo의 머릿속
이메일: t01053604256@gmail.com
연락처: 010-5360-4256

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
백엔드
역할이 지속적으로 증가하는 Entity를 개선하기 위해, Entity의 일부 필드들을 가지고 로직 수행하는 Domain 분리 (클린 아키텍처 도입)
수정보다 조회가 잦은 데이터를 db 필드에 추가하고 인덱스 적용해, 여러 기준으로 정렬되는 조회 쿼리 성능 개선 (2,000만건 데이터 기준 4.913s -> 0.001s)
AOP 적용해 읽기/쓰기 DB로의 요청 분산, 배포/모니터링/로깅 인프라 설계 및 구축
공동 구매 자동 확정을 위해 스케줄러 도입
refreshToken이 만료되었을 때 재로그인이 필요한 문제를 RTR 방식 도입으로 해결해 유저 경험 개선
일반 로그인을 Oauth 로그인으로 교체하는 과정에서, 계층 별로 dto를 나눠 내부 계층 변경 최소화
배포자동화 과정 중 OAS 파일을 업로드하기 위해 중복되던 gradle task 개선(swagger + restDocs 문서화)
유사 도메인 회사의 테크리드분과 도메인에 대한 인사이트 공유하며 기획 개선

크루위키

우아한테크코스 크루들의 재밌는 정보를 아카이빙 하기 위해 만든 서비스
우아한테크코스 교육과정과 별개로 크루들과의 추억을 간직하고자 진행한 프로젝트입니다. 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
백엔드 리드
DB를 Tree 구조로 설계해 폴더와 파일 구조 구현
OG 태그 크롤링 통해 url 관련 정보 제공
상대적 위치값 활용해 드래그 앤 드랍으로 인한 순서 변경 처리
HashSet 이용해 Tag 업데이트 로직 성능 최적화

정각

출발시간 기반 일정 및 모임 관리 서비스
네모톤(단기 해커톤)에서 진행한 프로젝트입니다. 모빌리티 도메인 관련해 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
백엔드 리드
GCP를 AWS와 비교해 사용하며 다양한 클라우드 플랫폼에 대한 이해도 향상
슈퍼키를 이용한 No Offset 기법 적용으로 페이징 성능 향상 경험
Redis를 블랙리스트 토큰 관리에 사용하며 인메모리 DB 경험
공공데이터 포털의 API를 사용해 쓰레기통 위치 정보 DB 구축
구글 임직원 멘토링 통해 유저 플로우 개선 및 기획 확장

Atties

예술작품 경매 플랫폼
버려지는 졸업작품들을 모아 판매하는 수익 구조가 그려져 외부 팀원들을 모집해 진행한 프로젝트입니다.
관련 링크 : 깃허브 | 관련포스팅
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, Redis, AWS EC2/RDS/S3/Route53, Docker, Github Actions
2022.12 ~ 2023.02
백엔드 리드
HTTPS 배포CORS 에러 해결 경험
DTO 조회 방식, MVC 방식에서 DTO 생성 위치, builder 패턴, enum, 연관관계 메서드 활용 등의 효율성을 따져보고 최적화된 방식을 선택해 프로젝트에 적용
성능 최적화를 위한 복잡한 쿼리를 SQL문으로 먼저 짜보고, 이를 QueryDSL로 옮겨 편리하게 구현하는 경험
알림 기능 구현하며 Spring에서 이벤트 비동기 처리 경험
아이디 찾기 메일 발송, 취향 맞춤 작품 추천 알고리즘, 경매 날짜 스케줄링 등 주요 비즈니스 로직 구현 경험

3. 경력

(주)에프아이솔루션

응용 소프트웨어 개발 및 공급업(40~50명, 개발팀 10명)
여름 방학 2개월간 학교 연계 인턴십으로 시작해, 이후 프리랜서로 전환해 총 6개월 근무했습니다. 경찰청 지문 등 사전등록제 현장방문 등록 사업 관련 개발을 담당했습니다.
관련 링크 : 웹사이트 | 관련포스팅
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, AWS EC2/RDS/S3, Nginx
2~30인 규모 사내 콜센터 부서가 사용하는 백오피스(상담 플랫폼) 유지보수
2023.06 ~ 2023.12
백엔드
레거시 코드 분석 및 리팩토링
한 테이블의 90개가 넘는 컬럼을 별도 테이블로 분리해 sparse한 칼럼을 없애고, 읽기 전용 테이블을 따로 분리하는 등 데이터베이스 스키마 재설계 후 교체해 쿼리 성능 증가
Spring Data JPA를 도입해 유지보수 보다 편리하게 만들고, batch fetching 적용해 쿼리 성능 12초 → 0.57초로 개선
QueryDsl 도입하며 리스트 순회하던 로직을 쿼리로 대체해 API 성능 6초 → 0.5초로 개선
레이어 분리나 네이밍 룰과 같이 일관되지 않는 부분 수정하고, 추상화 적용해 중복 코드 제거클린 코드 적용
잘못된 레거시 로직 수정해 기본 예외 동작하게 하고, 각기 다른 예외 커스텀을 일관된 방식으로 통일해 팀 내 규칙 정리함
시큐리티 설정 고려한 통합 테스트 환경 구축했고, 이를 통해 최종적으론 RestDocs 도입해 개발 효율 높임
레거시 이슈 대응 및 요구사항 반영
메일 전송용 공문을 서버에 직접 올리는 대신 S3에 저장하게 로직 수정해 불필요한 리소스 제거
세션 방식을 토큰 방식으로 변경해 타 서비스와의 통합 로그인 구축
43,000개의 어린이집/유치원의 교사들이 경찰청 지문 등록 사업에 대한 신청서 등록할 수 있는 웹 사이트 개발
2023.06 ~ 2023.07
백엔드
신규 경찰청 팀(백엔드 2인, 프론트엔드 2인) 체제 구축
초기 멤버로 협업 및 프로젝트 환경 구축에 기여
클라이언트와 주기적으로 소통하며 요구사항 문서화
Java 17, SpringBoot3 도입 (시큐리티 설정, PK 생성 전략 변경)

(주)NOI

IoT 하드웨어/소프트웨어 스타트업(10~15명, 개발팀 2~5명)
프리랜서로서 기존 웹 사이트 유지보수를 3개월 간 맡았고, 이후 새로운 애플리케이션 개발에 3개월 간 참여했습니다.
관련 기술 : Java, SpringBoot, SpringSecurity, SpringData, MySQL, AWS EC2/RDS/S3
두뇌 트레이닝 제공 및 결과 분석 애플리케이션 ‘BrainQube’ 개발
2024.01 ~ 2024.03
백엔드
다양한 두뇌 트레이닝의 결과를 정형화해 저장할 수 있도록 DB 설계
회원 탈퇴 시 JPA SoftDelete 사용해 트레이닝 결과 보존
다양한 형태의 미션 수행 여부를 여러 기능들에서 체크할 수 있는 공통 모듈 개발
회사 홈페이지 유지보수
2023.03 ~ 2023.06
백엔드
Firebase에서 AWS로의 Migration을 통한 서버 비용 절감
Firebase Authentication을 자체 구축 인증 서버로 Migration
Firebase Functions를 AWS EC2에 배포한 REST API로 대체

4. 자기소개

1.
다양한 사람들과 심도 있는 의견을 주고받는 걸 즐깁니다.
개발 동아리, 회사, 우아한테크코스 등 여러 집단에서 다양한 사람들과 소통하며 논리를 유연하게 주고받는 기술을 발전시켜왔습니다. 특히 우아한테크코스에서 크루들과 깊이 있는 토론을 통해 가파르게 성장했고, 함께한 사람들로부터도 긍정적인 피드백을 자주 받았습니다.
2.
확장에 열려 있는 설계에 관심이 많습니다.
리팩토링과 테스트 과정에서 겪던 구조적 문제들이 클린 아키텍처 개념 속에서 명쾌히 설명되는 걸 경험했습니다. 이후 발표 세션을 따로 기획 할 정도로 클린 아키텍처에 매료되었고, 프로젝트에도 이를 적용해 확장에 용이한 구조로 리팩토링했습니다.
변경에는 닫혀있으면서 확장에는 열린 코드를 지향하며, 다양한 기술에 대해 오픈 마인드를 유지하고 있습니다. 개발에 있어서 은탄환은 없다고 생각하지만, 클린 아키텍처라는 대전제에 기반해 다양한 기술을 효과적으로 수용할 수는 있다고 믿습니다.
일방적인 소통만으로는 한 명만 성장하는 팀이 된다는 걸 알고, 모두가 성장하는 팀을 만들기 위해 쌍방향 소통을 촉진하는 그라운드룰을 만들어보았습니다. 또한 일방적인 설명보다 상대가 알고 싶은 게 무엇인지 계속해 질문하며 소통하려 노력합니다.

5. 아티클

클린 아키텍처에 입각한 레거시 코드 리팩토링

프로젝트에서 마주한 문제(DB 의존 설계)를 Clean Architecutre에 대한 통찰에 기반해 풀어나갔습니다.

GCP 배포 A to Z 시리즈

Google Solution Challenge 대회 준비 당시 GCP 배포 관련한 국내 포스팅이 적고, 전체 과정이 통합된 포스팅이 없다는 게 아쉬워 GCP 배포 전 과정을 정리한 기술 포스트를 작성했습니다. 배포를 처음 하는 이들도 따라할 수 있게 최대한 많은 GUI 사진들과 설명들을 넣어 작성했고, 함께 대회 준비하는 타 팀들에게 공유해 도움을 주었습니다.

heap out of memory 에러 해결과 메모리 누수 검사

JavaScript Heap Out Of Memory 에러를 해결하며, 메모리 누수 검사를 진행했습니다. 기존의 메모리 누수 검사 관련한 포스팅들이 통일되지 않았다 느꼈습니다. 여러 검사 방법들을 정리하고 각각을 직접 사용하며 느낀 장단점을 정리한 기술 포스트 작성했습니다.

6. 활동

우아한테크코스 6기

백엔드
2024.02 ~ 2024.11 (10개월)
Java로 프로그래밍하며 단위테스트, TDD, Clean Code, OOP 경험
요구사항(JdbcTemplate, MVC, JPA, HTTP Client)에 맞춰 애플리케이션 발전시켜 나가는 경험
웹 서버, @MVC, JDBC 라이브러리 직접 구현하며 Spring Framework의 내부 동작 원리 이해

전국 연합 IT 동아리 DDD 9기

서버 멤버
2023.05 ~ 2023.08 (4개월)
격주마다 개발자, 디자이너 간 네트워킹 진행하고 프로덕트 개발

GDSC Open Community

교육 컨텐츠 개발팀(운영진)
2023.03 ~ 2023.06 (4개월)
교내 웹 스터디의 150여 명의 수강생에게 제공할 HTML, CSS, JS 교육 자료 검수
교내 백엔드 스터디의 40여 명의 수강생에게 제공할 Spring 교육 자료 검수

GDSC Hongik 1기

백엔드 멤버
2022.09 ~ 2023.02 (6개월)
격주로 열린 교내 개발 세미나에 스피커/리스너로 참여해 최초의 교내 개발 커뮤니티 형성에 기여
Agile과 Waterfall 비교 설명과 실제 프로젝트를 진행하며 느낀 각각의 장단점 발표
매주 Spring, Spring Boot, JPA에 대한 책/강의를 학습하고 발표하는 백엔드 세미나 수료

전국 연합 IT 벤처창업 동아리 SOPT 30기

서버 멤버
2022.03 ~ 2022.08 (6개월)
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