미리보기
기본 정보
안녕하세요. 백엔드 개발자 권재현입니다.
기술 스택
Java, Spring Boot, JPA, Spring Security, AWS
경력
싸이버로지텍
사원 | 해운 / 물류 솔루션 5팀
2023.03. ~ 2024.04. (1년 2개월)
1. Spring Legacy
Mybatis, Jqgrid / Pqgrid / IBsheet 연동 작업 - WEB 프로젝트 진행
Eclipse : AWS 환경 Spring 설정 진행
(2023.03 ~ 2024.04)
VDI 내에서 진행
사내 팀 프로젝트 형상관리 - GitLab
문서화 작업 - Confluence
업무 일정관리 및 이슈 관리 - Jira
일정 확인 및 커뮤니케이션- kt bizOffice & bizmeka(2주 간격 Sprint)
Dev 환경
- JAVA 1.8 / Spring Framework 4.3.30
- Tomcat 8.5(Servlet 3.1)
- Mybatis
Web 콘솔에 존재하는 해운 데이터 Excel 형태 문서화 및 팀 프로젝트 Eagle_Plus Data Batch 작업 진행
1. AWS 환경에서 GCP 환경 마이그레이션
2. AWS GCP 해운/물류 Web 데이터 및 Tableau 데이터 차이 엑셀 문서화
(AWS, GCP 패키지 변경사항, UI 탭 개수 일치 확인, Refresh Time 및 UI의 그래프 필터가 AS-IS(AWS)와 동일한지 확인)
3. 기존 VDI 내에서만 접근가능한 물류 서비스 데이터 관련 (https://one.eagle-plus.com/) - Spring 환경 Java, MyBatis 코드 리팩토링
4. JqGrid 기반 Frontend + Spring단 Backend에서 물류 데이터 조회 속도 개선(조회 시 10건/초 100건/초)
2. 해운 / 물류(ONE Ocean Network Express) 관련 기존 Oracle 데이터
-> BigQuery(Google Cloud Console 환경) 변환 진행(2023.09 ~ 2023.10)
1. Orange Oracle에 존재하는 기존 Oracle 데이터 -> BigQuery(Google Cloud Console 환경) 변환 진행
Oracle 버전
Oracle 21c EE(JSON 저장 및 JavaScript 실행 지원)
BigQuery 버전
버전 기능 : Enterprise 버전
3. Python ORM SQLAlchemy 활용(2023.10 ~ 2023.11)
(Python 3.10, Postgresql12, Oracle-instantclient_21_8)
Oracle -> Postgresql 해운 / 물류 데이터 마이그레이션 진행
1. 기존에 GCP 콘솔에서 진행하던 Oracle BigQuery 데이터 이관 이후
2. Python ORM SQLAlchemy 활용 (Python 3.10, Postgresql12, Oracle-instantclient_21_8)
3. PyCharm IDE 내에서 Oracle -> Postgresql 해운 / 물류 데이터 마이그레이션 작업 진행
Oracle 버전
Oracle 21c EE(JSON 저장 및 JavaScript 실행 지원)
Postgresql 버전
PostgreSQL 12
4. 기존 Query Version Manager Application(BigQuery DataSet ) ->
Jquery & MyBatis 활용 BigQuery dataset eagleplus web에 migration(2023.11 ~ 2024.04)
1. 기존 Query Version Manager Application(BigQuery DataSet ) ->
Jquery & MyBatis 활용 BigQuery dataset eagleplus web에 migration
2. AcroDiff(소스코드 비교 툴) 사용
Dev 환경
- JAVA 1.8 / Spring Framework 4.3.30
- Tomcat 8.5(Servlet 3.1)
- Mybatis
5. Python 프로젝트
- Python SMTP 프로토콜 클라이언트 사용 - Email 데이터 전송
- SMTP 세션 생성 및 메일 전송 코드 개선
- 기존 xml 형태의 데이터가 반영된 메일 표시 Json 형태로 표시하여 사내 메일 송신하는 기능 개발
매드앱(주)
사원 | 시스템 개발팀
2021.12. ~ 2022.03. (4개월)
KrafterSpace 웹 사이트 프론트앤드 개발 참여 및 TreasuresClub 웹사이트 유지보수
Golang(Gingonic Framework)을 활용하여 더빙팩토리 외주 백엔드 API 개발 및 유지보수
Github 이슈 관리 및 Jira Canvan Board, Scrum 관리 & Confluence 문서작업
참고링크 : (https://www.krafter.space/ko/explore), (https://github.com/gin-gonic/gin)업무 파악 내용
- Jira Ticket을 활용하여 개발업무 진행상황 공유
- Jira와 Confluence를 활용하여 업무 프로세스 공유 및 Agile 개발 방법 및 데일리 미팅 진행
- Golang, Node JS를 이용하여 API 개발 업무 진행
- Pull Request를 통한 Github 업무 진행상황 공유
프로젝트
이커머스 프로젝트
항해 플러스(스파르타 코딩클럽)
2024.04. ~ 진행 중
e-커머스 상품 주문 서비스 구현
상품 주문에 필요한 메뉴 정보들을 구성하고 조회
사용자는 상품을 여러개 선택해 주문할 수 있고, 미리 충전한 잔액을 이용
상품 주문 내역을 통해 판매량이 가장 높은 상품을 추천
아래 4가지 API 를 구현
잔액 충전 / 조회 API
상품 조회 API
주문 / 결제 API
인기 판매 상품 조회 API
각 기능 및 제약사항에 대해 단위 테스트를 작성
다수의 인스턴스로 어플리케이션이 동작하더라도 기능에 문제가 없도록 작성
동시성 이슈를 고려하여 구현
재고 관리에 문제 없도록 구현
- 장바구니 기능
사용자는 구매 이전에 관심 있는 상품들을 장바구니에 적재할 수 있습니다.
이 기능을 제공하기 위해 장바구니 상품 추가 / 삭제 API, 장바구니 조회 API를 고려
부산시 여행추천코스 프로젝트 진행(DB 설계 및 서비스 API 개발 작업, AWS를 활용하여 서버 구축 작업)
Spharos Academy(신세계 I&C Spharos Academy 1기 교육)
2022.09. ~ 2022.11.
스파로스 아카데미 1기 2차 기업연계 프로젝트
github : https://github.com/CosMost-BE
개발 환경은 아래와 같습니다.
Framework: Spring Boot (2.6.8)
DB: Mysql DB(8.0.29)
Language: Java (JDK 11.0.15)
IDE: Intellij IDEA
Collaboration tool : GitHub, Notion
Build: Gradle
Spring Boot를 활용하여 SSG.COM 클론코딩을 진행(DB 구축 및 서비스 API 개발 작업)
Spharos Academy(신세계 I&C Spharos Academy 1기 교육)
2022.07. ~ 2022.09.
스파로스 아카데미 1기에서 진행한 SSG.COM 신세계몰 클론 코딩 프로젝트입니다.
https://github.com/K-J-HYEON/SSG_SSAG_BE_5Group
개발 환경은 아래와 같습니다.
OS : Windows 10, Mac OS, Ubuntu 20.04.4 LTS
Infra : AWS EC2, Nginx
DB : AWS RDS(MySQL 8.0.28)
Storage : AWS S3
Backend : Spring Boot 2.6.10, Gradle(빌드), JPA(DB접근)
Api : Naver SMS API, Naver Login API, KaKao Login API
포트폴리오
교육
부산대학교
대학교(학사) | 분자생물학과
2014.03. ~ 2020.08. | 졸업
양정고등학교
고등학교 | 인문계
2011.03. ~ 2014.02. | 졸업
대외활동
항해 플러스 백엔드 4기 수료
스파르타 코딩클럽
Test Driven Development
- 모든 코드를 테스트 가능하게 구현하는 것을 목표로 진행
- 테스트 커버리지 100% 가 아니라, 정확히 기능의 동작을 확인하는 테스트를 작성
- 주요 기능에서 private
접근자, 객체간의 강결합 같이 테스트 불가능한 코드는 가능한 한 지양
클린아키텍처
- Layered 아키텍처로 진행
- 애플리케이션의 핵심은 비즈니스 로직
- 데이터 계층 및 API 계층이 비즈니스 로직을 의존 ( 비즈니스의 Interface 활용 )
- 도메인 중심적인 계층 아키텍처
- Presentation 은 도메인을 API로 서빙, DataSource 는 도메인이 필요로 하는 기능을 서빙
서버 구축 & 동시성 문제
- 아키텍처와 테스트 코드 작성에 집중, 시나리오 기반 서버 애플리케이션 구축
- 견고하고 유연한 서버 개발을 지향
- 마일스톤 및 API 명세 / 시퀀스 다이어그램 / 플로우 차트 작성
- ERD 설계 / Mock API 작성 / API Documentation 작성
- Repository에 대한 Integration 테스트 고려
동시성 문제와 극복 및 트래픽 처리 (학습 Github)
- DB의 동시성 문제 및 DataBase Lock, 분산락에 대해 학습 및 프로젝트에 적용
- 상품의 재고 차감 및 복원, 사용자의 포인트 잔액에서 동시성 이슈가 발생하는 비즈니스 로직 파악
- 잔액 충전 및 사용 시 update가 일어나고 잔액이 부족하고나 특정 상품의 재고가 부족하면
- 이전의 commit들은 rollback 시켜줘야 함 & 비관적 락을 사용하여 테이블에서 row가 같으면 순서를 지켜서 정합성을 보장.
- 충돌 상황에 따른 낙관적 & 비관적 락 설정 케이스 파악 및 key - value 기반 이용 Redis 통해 DB부하를 최소화하는 Lock 설계
스파로스 아카데미 1기 ssg,com 클론코딩 프로젝트
신세계 I&C
Project1(ssg.com 구현)
- 프로젝트 전체적으로 사용자 인증(Auth)API 개발 파트 부터 진행하여 점차 확장(좋아요, 리뷰 및 상품 Q&A 등등)
- 역할 : DB 설계 (ERD Cloud에서 진행), 서비스 설계 및 문서작업(요구사항 명세서, API 정의서), 사용자 인증 및 상품 리뷰, Q&A관련 API 개발
- 배운 점
1. AWS EC2, S3, RDS 서비스를 활용하여 클라우드 DB 서버 이용
2. 스프링 부트 & Layered Architecture를 이용해 패키지 구조 생성 및 API 개발 진행흐름 파악
3. Pull Request를 통한 Github 업무 진행상황 공유
- Front-End와 API 데이터 연동시 아래와 같은 CORS 에러 해결 및 이슈 트래킹
Project2(부산 여행 코스 공유 커뮤니티 구현)
- 역할 : DB 설계, 서비스 설계 및 문서작업(요구사항 명세서, API 정의서), 사용자 인증 API 기능 구현(이메일 인증),
DB와 Dummy Data 연동작업
1. Pull Request & Issue 상황을 통한 Github 업무 진행상황 공유
2. Slack 및 Google Meet을 이용, 조원들과 업무 피드백 공유 및 개발 프로세스에 반영
3. 도메인 주도 개발 프로세스 & Git flow를 활용하여 개발 프로세스 진행
4. AWS EC2 생성 & ALB연결 & Github Organization을 이용, MSA 구조를 활용하여 개발 프로젝트 진행
5. AWS ElastiCache 및 Amazon Linux2 Redis 활용 이메일 인증
자격증
정보처리기사
한국산업인력공단
2023.06.
ADsP(데이터분석준전문가)
합격 | 한국데이터산업진흥원
2021.04.
외국어
영어
일상 회화 가능
자기소개
안녕하십니까, 지원자 권재현입니다. 작년부터 IT 공부를 시작하였고 스파로스 소프트웨어 교육프로그램에 참가하여 팀프로젝트를 하면서 IT역량을 쌓아올렸습니다. CS와 백엔드 공부를 주로 하는 중이고 자바 기반 스프링프레임 워크를 활용하여 서비스 API를 개발하는 것이 제가 학습하고 있는 내용입니다.
팀 프로젝트를 하면서 Miro라는 협업툴을 이용하여 이벤트 스토밍을 진행하였고 마이크로 서비스 단위로 프로젝트 서비스를 나누어서 도메인 주도설계를 시작하였습니다. MSA 구조로 서비스 단위를 나누면서 ERD 설계를 진행하였고 데이터베이스 구축을 하였습니다.
주로 사용자 서비스 API 개발을 맡았으며 Spring Security를 활용하여 기본적인 사용자 서비스를 개발하였습니다. Spring Security와 Spring Cloud의 전반적인 흐름과 동작구조를 학습하고 개발을 진행하면서 에러사항이나 이슈사항이 생기면 팀원들과 피드백을 주고받으면서 해결해나갔습니다.
프로젝트 협업과정에서 배우는 즐거움이 굉장히 좋았고 IT 학습을 꾸준히 하는 원동력이 되었던거 같습니다. 의사소통을 기반으로 협업능력을 발휘하여 성과를 최대한 보여주는 프로그래머가 되겠습니다. 감사합니다.