
Contact
Email. pjh_jn@naver.com
Phone. 010-2104-2419
Git
Velog
Baekjoon Online judge
🐢 끝까지 가는 거북이
안녕하세요? 끝까지 가는 거북이 박진형 입니다. ”끝까지 가면 결국은 내가 이긴다” 라는 마음 가짐을 가진 포기를 모르는 사람입니다. 배우고 겪은 것들을 기록하는 것을 좋아하며 공유하며 함께 성장하는 것을 좋아합니다.
# 경험과 배움을 중요시 여기며 나눌줄 아는 사람
“모르는것은 문제가 아니다. 다만, 모르는 것을 알면서 알려고 하지 않는 것이 문제다” 라는 말을 항상 되새기며
경험과 배움을 최고 가치로 여길줄 알고 끊임없이 공유하며 선한 영향력을 끼칠 수 있는 사람이 되고자 하는 사람입니다.
저는 경험과 배움을 두려워하지 않습니다.
경험 해보지 못한 일이 저에게 주어졌을 때엔,
“한번도 경험해보지 못한 것인데, 내가 이걸 해내지 못하면 어떡하지?” 라는 마음가짐 보다는
“내가 경험해보지 못한 것이지만 어떻게든 이번 기회에 내 것으로 만들겠어!" 라는 마음가짐으로 임합니다.
저는 꾸준함은 최고를 만든다는 믿음 하에 꾸준히 Velog에 학습한 내용들을 기록하고있습니다.
이 기록들은 다른 사람에게 부족하거나 잘못된 정보로 인해 과도하게 이상한 길로 빠지지 않도록하는 이정표가 되었으면 하는 바램과 제가 학습한 내용들을 잊지 않고자 하는 목적이 있습니다.
# 코드 리뷰에 진심인 사람
팀 프로젝트에 있어서 코드 리뷰는 귀찮은 숙제가 아닌 프로젝트의 완성도를 높이고 팀 구성원 모두가 생각을 나누며 성장할 수 있는 중요한 요소라고 여기고 있습니다.
코드 작성 시 항상 근거를 생각하려고 노력하고, 지속적으로 개선을 하려고 노력하고 있습니다.
Reviews 예시 보기⚒ Tech Skills
💻 Projects
문서화를 기반한 프로젝트 진행
- 프로젝트 시작에 앞서 목표, 협업 프로세스, 스프린트 규칙 등을 확립
- 프로젝트 시작 전 공통목표와 개별 목표를 확립해 목표를 위해 나아가도록 함
- 정해진 협업 프로세스를 따라 프로젝트 진행
- 사전에 스프린트 규칙을 정해 스프린트간 과업들을 확립
- Notion을 통해 회의록, API 명세서, 시퀀스 다이어그램, 유스케이스 다이어그램 등 작성
- 프로젝트 진행 시 습득한 스킬 기술문서화
- 프로젝트 진행간 습득한 기술을 문서화하여 공유
- 기술에 관한 정보 필요 시 문서를 읽으며 학습할 수 있어 팀원간 기술 이해도 밸런스 유지
Portfolio
SFAM 포트폴리오자세한 개발, 트러블 슈팅, 프로젝트 진행 과정을 확인하고 싶으시다면 포트폴리오 페이지를 확인해주세요.
Description
내 주위에서 함께 스포츠를 즐길 수 있는 Sports Family를 찾을 수 있는 서비스입니다.
운동 메이트를 만들고 싶지만 어떻게 해야될지 모르겠을 때, 상대방이 과연 매너있고 스포츠 정신이 겸비되어있는 사람인지 파악하고 경기를 하고 싶을 때, 어떤 팀에 소속되어 팀의 에이스로 성장하고 싶을 때, SFAM 서비스를 이용해서 간편하게 운동 메이트를 구할 수 있습니다
Spring Boot Web Application으로, 프론트엔드 팀과 협업을 통한 프로젝트를 진행했습니다.
Details
- 확장성을 고려한 JWT(RefreshToken 방식 + Redis), OAuth 적용
- 유연한 API 사용 및 Offset 방식 페이징 단점을 보완 하기 위한 동적쿼리, 커서 페이징 방식의 조회 API 구현
- 이미지로 위장한 불순한 데이터 업로드 방지를 위한 Validator 구현
- 인증 여부 2차 검증을 위한 @AuthenticationPrincipal 어노테이션 커스텀
- 커스텀 어노테이션 사용 후 스웨거에 명세되는 문제 해결
- 환경별로 다른 설정 값들을 유연하게 사용하기 위해 설정들을 yml로 외부화
- Cookie 옵션, CORS, Security Permit, MVC ignore, JWT 설정 등을 yml로 외부화
- S3, OAuth 도입 후 발생한 통합 테스트 의존성 문제 해결
- Feign Client를 활용해 외부 API(Reverse Geocoding)를 사용해 사용자 지역명 제공
- 통합 배포 자동화를 위한 Github Action, S3, CodeDeploy를 이용한 CI/CD 구축
- 코드 병합시 동작 가능한 상태를 유지하기 위한 PR Test 환경 구축
- 로그 확인의 불편함 개선을 위한 AWS Cloud Watch를 활용한 로그 모니터링 구축
- 반복적인 시드 데이터 삽입 자동화를 위한 Flyway 활용
Tech Skills
Language
Java 17
Framework
Spring Boot 2.7.1
JPA(QueryDsl)
DB/Cache
Skill
Mysql
Redis
JWT
OAuth
Cursor Paging
Jasypt
Git Submodule
Docker
CI/CD
Github Action
AWS Code Deploy
AWS S3
Portfolio
자세한 개발, 트러블 슈팅, 프로젝트 진행 과정을 확인하고 싶으시다면 포트폴리오 페이지를 확인해주세요.
Description
백엔드 팀원끼리 기능별로 프론트엔드, 백엔드 담당을 나누어 모의 협업 상황을 가정해 프로젝트를 진행
인스타그램을 클론코딩하며 페이징 및 동적 쿼리, 프로젝트 설정 암호화, 로깅, API 명세, DB락 등에 대한 지식을 습득하고 공유하며 적용해보는 것이 목적
Details
- Profile별 설정 구축 및 문서화
- 유연한 환경별 설정을 위한 환경별로 변동되는 설정 프로퍼티화(하드코딩 → yml)
- 민감 정보 노출 방지를 위한 Jasypt와 Git Submodule을 응용한 환경 별 설정 및 민감정보 은닉
- 그 외 profile grouping, spring cloud config 기술 습득 및 문서화
- JWT(RefreshToken 방식) 적용 및 문서화
- 커서 방식 페이징 구현 시 발생할 수 있는 커서 값 중복에 따른 조회 데이터 누락 상황 고민 및 해결
- 글 작성일 시 기준 페이징 시 작성ㅍ일이 중복될 경우를 고려
- Velog 포스팅 - Offset Paging vs Cursor Paging
- Deprecated된 WebSecurityConfigurerAdapter 대처
Tech Skills
Language
JAVA 17
Framework
Spring Boot 2.7.0(Thymeleaf)
JPA(JPA Criteria)
DB
MySQL
Skill
Cursor Paging
JWT
Jasypt
Git Submodule
Docker
Feign Client
GitHub Repository
FootBall_Love
pjh612 • Updated Feb 5, 2022
Description
Spring Boot 학습을 목적으로 축구 경기를 매칭해주는 중개 서비스 프로젝트 진행
백엔드 서버를 전체적으로 구성 해보며 백엔드 엔지니어로써의 역량을 키우고자 함
Details
- 스프링 학습 중 첫 프로젝트
- JWT/HTTPS 학습 및 적용
- 세션 인증 방식과 토큰 인증 방식의 차이점을 학습하고 이해
- HTTPS HandShaking, 통신 과정을 학습하고 이해
- Velog 포스팅
- NginX를 활용한 로드밸런싱 및 리버스 프록시 적용
- 과한 트래픽으로 인한 서버 다운 현상을 스트레스 테스트로 재현하고 로드밸런싱을 통해 트래픽 분산을 경험
- 리버스 프록시의 보안적 장점을 이해하고 CORS 문제를 해결
- Velog 포스팅
- Google Cloud Platform VM인스턴스와 Jenkins 활용 CI/CD, 무중단 배포
Tech Skills
Language
Framework
JAVA 11
Spring Boot
JPA
Skill
JWT
DB
MySQL
Redis
CI/CD
Jenkins
NginX
GCP
📖 Experience
프로그래머스 백엔드 데브코스 2기
2022.3.18 ~ 2022.08.17
Java&Spring Framework 기반 커리큘럼을 바탕으로 백엔드 개발자 지망생 약 60여명의 수강생들과 약 5개월간 4~5명씩 팀을 이루어 백엔드 엔지니어링 역량 강화
목적
- 이전까지의 학습 성취가 올바른 방향이었는가를 점검
- 실무에서 왕성하게 활동 중인 멘토진의 코칭
- 개발자 동료(수강생)들과 동료학습하며 지식 공유, 성장 시너지 발휘
성취
- 실무 협업방식 간접 경험
- 백엔드 개발자로써의 역량 강화
- 팀원들과 꾸준한 스터디, 지식공유, 소프트 스킬 향상
✏️ Study
Algorithm
# 교내 알고리즘 스터디
2018.04 ~ 2020.06
2~10명 참여
진행 방식
- 학과 내 알고리즘 스터디를 주도적으로 개설 및 운영, 스터디원들과 함께 문제를 선정해 정기적으로 모의 코딩 테스트를 진행
- 테스트 종료 후 서로의 풀이방식을 공유하는 방식으로 운영
Book
# 오브젝트
2022.08 ~ 진행 중
5명 참여
Github Repository
진행 방식 및 목표
- 각자 정해진 분량을 읽고 Github Repository에 읽은 내용을 정리 후 모여 책 내용에 대해 토론, 책에 나오는 키워드들의 개념을 명확하게 알고 있는지 말해보는 시간을 가짐
# 엘레강트 오브젝트
2022.05.23 ~ 2022.06.29
7명 참여
성취
- 다양한 객체지향에 대한 시선을 이해함
- JAVA, Spring으로는 이 책에서 말하고 있는 “진짜 객체지향"을 따르기에는 한계가 있다고 느꼈음
# 객체지향의 사실과 오해
2022.04.12 ~ 2022.05.20
5명 참여
진행방식
각자 정해진 분량을 읽고 모여 의문이 드는 점, 생각 공유, 객체지향적 설계 실습
성취
- 객체 지향이란 무엇인지 학습함
- 책에서 나와있는 커피, 바리스타, 손님 등의 객체를 확장해 카페 전체를 객체지향적으로 구성해보고 객체지향적 설계를 연습해 봄
# 클린코드
2022.04.12 ~ 2022.06.14
2명 참여
진행방식
- 회차별로 담당한 챕터를 읽고 정리한 내용을 Github Repository에 공유하고 발표하고 의문점을 공유하는 방식
Github Repository
clean_code
pjh612 • Updated Apr 9, 2022
성취
- 코드 작성 시 항상 다른 이에게 보여지며 이해시켜 줘야 한다는 생각으로 작성하는 것이 중요함을 느꼈음
- 올바른 설계와 깨끗한 코드 작성은 확장성과 유지보수성이 향상되고 길게봤을 때에는 훨씬 더 적은 비용이 든다.
- 네이밍의 간결함도 중요하지만 명확성이 더 중요하다고 느꼈음
- 관리하기 힘든 주석보다 명확한 네이밍을 활용하자
- 하나의 함수는 한 가지 작업을 하도록 작성하는 것이 중요하다.
📚 Education
컴퓨터 공학 학사
- 동의 대학교 (4.16 / 4.5) - 부산 광역시, 2021년 졸업
🪪 Certification
정보처리기사
- 2021-11 취득