미리보기
기본 정보

자기소개
Java / Kotlin과 Spring, AWS를 기반의 3년차(만 2년차) 서버 개발자 고현석입니다. 저는 대규모 차세대 프로젝트에 참여하여 서버 개발을, 피트니스 시설을 대상으로 한 CRM / ERP 시스템 서버 개발 및 인프라 구축을 담당해왔습니다.
개발 목표 1순위를 에러가 발생하지 않는 정확한 로직으로 두고 있으며, 이를 위해 테스트 작성을 필수로 생각합니다. 성능 개선이나 클린코드 또한 관심이 많고, 좋은 설계와 코드 컨벤션을 통해 지속 가능한 서비스를 만들기 위해 노력합니다.
주니어 개발자로서 성장을 갈망하고, 주도적인 학습을 통해 성장을 이루어 냅니다. 심도 있는 학습을 통해 실무에 적용할 수 있는 수준까지 익히는 것을 목표로 합니다. 새로운 기술에 대해 기계적으로 받아들이는 것이 아니라, 기존의 항목과 비교하여 장단점을 구별해 나가며 프로젝트에 보다 합리적인 판단을 하려 노력합니다.
이 밖에도 코드나 기술에 대해 의견 나누는 것을 좋아하고, 코드 리뷰나 페어 프로그래밍을 지향합니다. 동료의 코드에 대해 모두 이해하고, 피드백을 주기 위해 노력합니다. 새로운 시각에서 리뷰 해주며 제 시야를 넓혀주는 동료들에게도 감사함을 느낍니다.
경력
주식회사에이피티플레이
프로 • 개발팀
CRM 프로젝트 전체 리팩토링
기간: 2024.12 ~ 2025.04
기술스택: Spring Boot 3.1.4, Java 17, JPA, MySql 8, Github Actions, aws(elb, ec2, rds)
1. DDD 및 애그리거트 패턴 적용
MVP 모델 단계를 넘어가며 기존 코드들이 Big Ball of Mud 상태임을 인지
도메인 주도 설계 제안 및 팀 내 제안서와 스켈레톤 프로젝트 공유
이벤트 스토밍을 통해 도메인 모델 추출 및 설계
Domain 엔티티와 JPA 엔티티를 분리하여 도메인과 기술(JPA)의 상관관계 제거
2. 멀티 모듈을 적용한 단일 프로젝트로 리팩토링
Entity, Enum 등 공통 코드의 변경사항에 직접적으로 영향을 받는 멀티 프로젝트 구조
레이어드 아키텍처를 기준으로 멀티 모듈 단일 프로젝트 구성
DIP와 추상화를 통한 기존 레이어드 아키텍처의 비유연성 해결
Jacoco Aggregation을 활용한 통합 테스트 커버리지 관리 구성
도메인을 중심으로 확장 및 유지보수에 용이한 구조로 구성
3. 영속성 컨텍스트에 의존하지 않는 Audit 기능 구현
Domain 엔티티와 JPA 엔티티를 분리하면서 영속성 컨텍스트를 활용할 수 없게 됨
Java Reflection과 Spring AOP를 활용하여 Created Audit 기능 구현
Hibernate의 StatementInspector를 활용하여 Query 추적 및 Updated Audit 기능 구현
사내 기술 블로그에 기고: https://tech.assistfit.io/blog/clean-ddd-good-bye-jpa
사내 기술 블로그 오픈
기간: 2024.12 ~ 2025.01
기술스택: Docusaurus, Node 18, Github Pages, Github Actions
업무 내용
프로덕트 관련 지식 공유 및 HR 측면에서의 이점을 위해 기술 블로그 구축을 직접 제안
사내 기술 블로그 관련 기획 및 리딩 담당
Github Actions와 Github Pages를 활용한 호스팅 및 배포 자동화 구축
출석 앱 프로젝트
기간: 2024.09 ~ 2024.12
기술스택: Spring Boot 3.1.4, Java 17, JPA, MySql 8, Github Actions, aws(elb, ec2, rds)
1. VPC Peering과 CompletableFuture을 활용한 성능 개선
안면 인식 API 호출 시 처리 시간이 길어 사용성이 좋지 않다고 판단
외부 업체와 VPC Peering을 통해 성능 향상
Timeout 설정을 통해 응답 지연 방지
CompletableFuture를 활용한 비동기 처리를 통해 다건 등록 및 삭제 성능 개선 (최대 1.4sec → 0.4sec)
2. 회원권 조회에 전략 패턴 적용
출석을 위해 회원권을 조회하는 방법이 여러 가지 존재
회원권 조회에 대한 전략을 인터페이스로 추상화
코드 가독성 향상 및 확장에 열려 있는 구조로 개선됨
3. 외부 API에 CircuitBreaker 적용 (2025.03)
외부 서버에 장애가 발생하면 내부 서비스로 전파될 수 있다고 판단
Resilience4j를 통해 Retry와 CircuitBreaker 적용
RegistryEventConsumer와 EventPublisher를 통해 상태 전환 시 Slack 알림 전송 로직 구현
불필요한 요청 절감 및 서비스 안정성 향상
Assistfit CRM 프로젝트
기간: 2023.11 ~ 2024.07
기술스택: Spring Boot 3.1.4, Java 17, JPA, MySql 8, Redis 7, Github Actions, aws(elb, ec2, rds,
elasticache)
1. 약 450개의 단위 테스트 및 통합 테스트 작성
수업 관리 및 연장, 정지 기능 등의 복잡한 회원관리 관련 비즈니스 구현
도메인의 복잡함과 기획의 변경이 잦다는 특징을 고려하여 테스트 설계 및 작성
Fixture Monkey 오픈소스 도입을 통한 불필요한 보일러 플레이트 제거
테스트 전략 확립 및 테스트 코드 추상화를 통한 build 및 CI 시간 단축 (7m19s → 5m36s)
시스템이 견고해지고, 생산성이 향상되는 효과를 얻음
2. Redis를 통한 처리시간 단축
회원 조회 페이지 → 회원권 만료가 day 기준이라 최대 하루는 변경되지 않는다고 판단
Redis Cluster 환경 구축
Look-Aside 전략과 Write-around 전략을 활용한 캐시 적용
3. Query 튜닝을 통한 성능 향상
이전에 작성된 쿼리 중 불필요한 쿼리로 인해 자원이 낭비되고 있다고 판단
fetch join을 활용한 N+1 문제 해결
적절한 인덱싱, no offset 등을 통한 복잡한 조회 성능 개선 (517ms → 125ms)
PT 및 GX 수업 예약 프로젝트
기간: 2024.05 ~ 2024.06
기술스택: Spring Boot 3.1.4, Java 17, JPA, MySql 8, Github Actions, aws(elb, ec2, rds)
1. Named Lock을 활용한 동시성 처리
GX 예약 프로세스에서 x-lock을 얻기 위한 Deadlock 발생 문제 식별
비용 문제로 Redis를 활용하지 못하는 상황에서 MySql의 Named Lock 활용
Spring AOP를 활용하여 Transaction 종료 후 Lock이 해제되도록 구현
비관적 잠금을 활용했을 때보다 성능 향상
2. 도메인 모델 패턴 적용
이전 코드들이 트랜잭션 스크립트 패턴으로 작성돼 있음
관련 코드들을 객체지향적으로 리팩토링 및 신규 Feature도 도메인 기반 설계
(1년 8개월 | 정규직)
(주) 코드잇
프리랜서
FE 부트캠프 수강생들의 최종 프로젝트 서버 개발 업무 수행
기간: 2023.07 ~ 2023.09
기술스택: Spring Boot 3.1.2, Java 17, JPA, MySql 8, Redis 7, Github Actions, aws(elb, ec2, rds,
elasticache)
1. 소셜 로그인에 전략 패턴 적용
Spring Security와 OIDC를 활용하여 소셜 로그인을 구현하는 상황
OIDC를 활용한 인증 프로세스는 모두 비슷하다고 판단 (Google, Apple, Kakao)
OidcProvider 인터페이스를 통한 추상화 및 전략 패턴 적용
소셜 로그인 플랫폼 추가 및 제거 등 확장에 유연한 구조 설계
2. CICD 구축
요구사항이 자주 추가 및 변경된다고 판단
Docker와 Github Actions을 활용하여 CICD 구축
테스트 및 배포에 편리함 제공
(3개월 | 프리랜서)
주식회사케이티디에스
사원 • 고객서비스본부 ICIS Tr 고객팀
KT 통합고객정보시스템(ICIS) 차세대 프로젝트 수행
기간: 2023.02 ~ 2023.07
기술스택: Spring Boot 3.0.2, Java 17, Jpa, MyBatis, Nexacro, Tibero DB, Oracle DB
1. 고객 파트 인터넷 응용 도메인 관련 개발
Pro*C와 Visual C++로 구현된 AS-IS 코드를 분석 및 Spring Boot와 Nexacro로 전환
약 20개의 테스크 해결
2. OpenFeign 개발 업무 수행
Monolithic에서 MSA로 전환하며 타 도메인과의 통신 필요
신속한 OpenFeign 개발 업무를 처리하여 고객팀 전체의 업무 진행이 순조롭도록 기여
(7개월 | 정규직)
포트폴리오
URL
기술 스택
대외활동
프로그라피
프로그라피 네트워킹 세미나 연사
프로그라피 네트워킹 세미나에 연사로 참가하여 <사이드 프로젝트에 멀티 모듈 도입하기> 라는 주제로 발표했습니다. 각 모듈의 책임과 역할, 모듈 간의 의존 관계, 모듈에게 필요한 제약 조건 등을 중심으로 발표 및 QnA 시간을 가졌습니다.
2024
프로그라피 9기
Spring 파트 매니저
프로그라피 9기에 서버 파트 매니저로 참여하여, 2년 간의 회원으로 활동한 경험을 바탕으로 커뮤니티의 홍보 및 원활한 운영을 위해 힘 썼습니다. 2024년 1월, 네트워킹 데이 행사에 연사로 참여하여 <사이드 프로젝트에 멀티 모듈 도입하기> 라는 주제로, 각 모듈의 책임과 역할, 모듈 간의 의존 관계, 모듈에게 필요한 제약 조건 등에 대한 내용을 포함하여 발표를 진행하였습니다. 2024년 2월, 9기 모집 과정에서 서버 파트 과제 채점을 자동화 하기 위해 Spring Boot와 docker를 활용하여 과제 채점 자동화 프로그램을 개발했습니다. 이를 통해 약 70명의 과제 수행 및 제출 건에 대하여 자동 채점했습니다.
2024
프로그라피 8기
Spring 파트 회원
Spring 개발자로 프로그라피 8기에 참여하여 타임라인 기반 커플 다이어리 앱 서비스인 러브버드 서비스를 개발 및 배포했습니다. 개발하는 과정에서 핵심 기능인 타임라인 조회의 성능을 개선하기 위해 Query Plan을 분석하여 커서 페이지네이션을 도입하였습니다.
2023
프로그라피 7기
Node 파트 회원
Node 개발자로 프로그라피 7기에 참여하여 포모도로 집중법에 게이미피케이션 요소를 접목 시킨 '포동포동' 서비스를 개발 및 배포했습니다. 저는 Web Socket을 활용하여 Realtime 서비스 환경(채팅 및 게임 요소)을 구현하였습니다.
2022
교육
한국공학대학교
대학교(학사) | 컴퓨터공학전공
2017.03. ~ 2023.02.
졸업
양명고등학교
고등학교 | 이과
2014.03. ~ 2017.02.
졸업
자격증
SQLD
- | 한국데이터산업진흥원
2024.06.