미리보기
- 직업
- 백엔드 서버 엔지니어
- 이름
- 김현수
- 간단소개
- 안녕하세요. 준비된 백엔드 개발자 김현수입니다.
자기소개
- 자기소개
꼼꼼함과 문제 해결 능력
문제 상황 발생 시 코드를 꼼꼼하게 검토하고 전반적인 흐름을 이해하는 데 능숙합니다. 문제 발생 시 로깅을 통해 신속하게 문제의 원인을 파악할 수 있으며, 이를 통해 팀원들로부터 빠르고 정확한 피드백을 제공한다는 평가를 받았습니다.
기록 습관과 지식 공유
모든 기술에는 기반 개념에 대한 깊은 이해가 필요하다고 생각합니다. 저는 얻은 인사이트와 해결 과정을 블로그에 정리하여 기록하는 것을 습관화하고 있습니다. 현재까지 약 400여 개의 글을 작성했으며, 이를 통해 지식을 스스로 정리 및 공유하고 있습니다.
원활한 의사소통과 협업
협업 시 원활한 의사소통을 중요시하며, 서로 지식을 공유하고 함께 성장하는 방식을 지향합니다. 특히, 혼자 학습하기 어려운 내용은 스터디를 통해 해결하고, 개발 시에는 컨벤션이나 개발 지향점에 대해 논의를 통해 협의점을 찾습니다.
기술 스택
- 기술 스택
- Java
- Spring Boot
- JPA
- MySQL
- Spring Security
- JWT
- Docker
- docker-compose
- Git
- aws-ec2
- oauth2
- github-actions
- Redis
- rabbitmq
- JIRA
프로젝트
- 프로젝트명
- BooTakHae | 동시성 제어 & Look Aside 캐싱 전략 & Spring Scheduler
- 소속/기관명
- 항해99
- 프로젝트 기간
- 2024.04. - 2024.05.
- (2개월)
- 프로젝트 설명
상품 주문 시 발생하는 동시성 이슈를 Lock을 활용하여 제어(자세히 보기)
문제 : 재고 관련 race condition으로 인한 관리 어려움이 발생함.
의사결정 : Pessimistic Lock을 활용하여 동시성을 제어하기로 결정함.
적용 : @Lock 어노테이션을 사용하여 Pessimistic Lock 적용함.
영향 : 30개의 멀티 스레드가 동시에 요청하여 5,000개 재고를 정상 처리하도록 하여, 데이터 신뢰성이 향상됨.
상품 목록 조회 시 발생한 성능 저하 이슈를 캐싱을 활용하여 개선(자세히 보기)
문제 : 상품 목록 조회 시 데이터베이스 접근으로 인한 성능 저하가 발생함.
의사결정 : Redis Cache를 활용하여 자주 조회되는 고정 데이터 캐싱하기로 결정함.
적용 : Look Aside 캐싱 전략을 활용하여 상품 목록의 고정 데이터를 캐시에 저장하여 조회 시 활용함.
영향 :
상품 목록 조회 성능이 36.22ms에서 5.49ms로 85% 개선되어 사용자 경험이 향상됨.
마이크로서비스 아키텍처 구현: Spring Cloud, 비동기 통신, 자동화 스케줄링, 그리고 컨테이너화를 통한 효율적인 시스템 구축
Spring Cloud Gateway와 Netflix Eureka를 활용하여 동적 라우팅 및 서비스 디스커버리를 구현.
RabbitMQ 메시지 브로커를 도입하여 서비스 간 비동기 통신을 통해 시스템 확장성을 고려하여 구현.
Spring Scheduler와 @Scheduled 어노테이션을 활용하여 Cron 표현식 기반의 구현, 주문 상태 변경 등의 정기적 작업을 자동화하여 운영 효율성 높임.
도커와 도커 컴포즈를 활용하여 마이크로 서비스의 개별 이미지 빌드 및 다중 컨테이너 관리로 배포와 관리의 용이성 높임.
Skills - Java, Spring Boot, Spring Data JPA, Spring Security, MariaDB, JWT, Redis, Spring Cloud Gateway, Spring Cloud Netflix, RabbitMQ, Docker, Docker-Compose
- 프로젝트명
- GraduationGoodBye | AWS 배포 & 소셜 로그인 구현 & 테스트 코드 작성
- 소속/기관명
- 개인
- 프로젝트 기간
- 2024.07. - 진행 중
- (4개월)
- 프로젝트 설명
클라우드 기반 CI/CD 파이프라인 구축 및 클라우드 서비스 활용(자세히 보기)
Github Actions와 AWS CLI 기반의 자동 배포 파이프라인 구현.
졸업 증명을 위한 사진 업로드 기능 구현을 위해 Amazon S3 연동 및 이미지 업로드 구현.
OAuth2.0을 통한 Google 소셜 로그인 /회원가입을 구현(자세히 보기)
JWT를 활용한 토큰 기반 인증 구현 및 토큰 탈취 리스크를 줄이고자 유효기간을 짧게 설정.
사용자 경험을 증진시키고자 accessToken과 refreshToken를 분리.
refreshToken 탈취 리스크를 줄이고자 RTR 방식으로 refreshToken을 주기적으로 갱신하도록 구현.
JUnit과 Mockito를 활용한 단위 테스트(자세히 보기)
Given-When-Then 패턴을 적용하여 테스트 가독성과 유지보수성을 크게 개선.
Member 도메인 테스트 커버리지 50% 달성.
Skills - Java, Spring Boot, MyBatis, Spring Security, MySQL, OAuth2, AWS, Amazon EC2, Amazon S3, JUnit5, Docker, Docker Compose, Github Actions
포트폴리오
교육
- 소속/기관
- 항해99
- 종류 | 전공명/전공계열
- 사설 교육 | 취업 리부트 코스
- 재학 기간 (재학 상태)
- 2024.03. - 2024.06. (졸업)
- 소속/기관
- 플레이데이터
- 종류 | 전공명/전공계열
- 사설 교육 | MSA 대용량 트래픽 처리 과정
- 재학 기간 (재학 상태)
- 2023.06. - 2023.12. (졸업)
- 소속/기관
- 목포해양대학교
- 종류 | 전공명/전공계열
- 대학교(학사) | 해양메카트로닉스 학부
- 재학 기간 (재학 상태)
- 2015.03. - 2019.01. (졸업)
자격증
- 자격증명
- 정보처리기사
- 점수/급 | 발급 기관
- 필기 합격 | 한국산업인력공단
- 취득월
- 2024.08
- 자격증명
- SQLD
- 점수/급 | 발급 기관
- SQLD-050013527 | Kdata
- 취득월
- 2023.10