미리보기
기본 정보
(개발바닥 이벤트) - 100여 명의 회원을 가진 서비스를 24시간 운영 중인 김지인입니다 - 프론트(vanila JS), 백(Spring Data JPA, Spring Security, Spring Batch, querydsl, Node), CI/CD 파이프 라인까지 모두 구축해본 경험이 있습니다. - 실제 사용자의 요구 사항과 운영 환경에서 발생하는 다양한 이슈들을 git branch 전략을 통해 버전 업데이트 하며 해결하는 능력을 키웠습니다. 이 경험을 통해 실제 서비스 환경에서도 효과적으로 개발을 진행할 수 있는 역량을 키웠습니다. - 새로운 기술에 적응력이 좋습니다. 사용하고 싶었던 기술(Spring Data JPA, Spring Security, Spring Cloud), 서버 배포(AWS ec2, Docker)를 독학으로 공부하고 팀원들에게 지식을 전수하여 프로젝트를 완성한 경험이 있습니다. - 쉬고 싶을 때 코딩합니다. 1일 1커밋 운동을 하며 그 결과 2,700개가 넘는 커밋이 쌓였습니다.
기술 스택
Java, Spring Boot, MySQL, JavaScript, TypeScript, JPA, Github, github-actions, Docker
프로젝트
QuizStudio
개인
2023.03. ~ 진행 중
gpt한테서 문제를 받아와 풀거나, 문제를 직접 제작하여 풀 수 있는 퀴즈 플랫폼
배포 주소 : https://www.quizstudio.site
Git : https://github.com/bmm522/quiz-studio
- 개인 프로젝트
- 프론트(Vanilla js) + 4개의 모듈(REST API)기반으로 구성된 프로젝트
- 서비스의 A to Z 를 경험하고 싶어, 프론트 부터 백, CI/CD 모든 것을 구축했습니다.
- 각종 커뮤니티를 통해 사용자를 모으고 의견을 반영하여 git 브랜치 전략을 통해 지속적인 업데이트 중입니다.
- 사용자에게 빠른 퀴즈 응답 데이터를 제공과 한정적인 리소스의 해결을 위해 기존의 RDBMS기반의 Spring 모듈에서 인메모리 DB기반의 Node 모듈로 마이그레이션 작업을 했습니다.
- OPENAI API 요청, AWS RDS에 저장 작업, Redis에 저장 작업 등을 일괄적으로 처리하기 위해 Spring Batch를 도입했습니다.
- JWT 토큰을 활용해 SSO를 구현하였고, 사용자 개인정보의 보안을 강화하기 위해 개인정보를 암호화하고 SSL을 적용했습니다.
- 총 100개가 넘는 테스트를 통해 코드의 안전성을 검증했습니다.
- OOP원칙과 유지보수가 쉬운 코드를 작성하기 위해 Mapper, Facade, CQRS 등 다양한 디자인 패턴을 적용하여 코드의 품질을 높였습니다.
- 로컬환경과 실 운영환경은 매우 다르다는 것을 알게해주고 수많은 이유와 고민이 담긴 프로젝트 입니다.
MZTALK
팀
2022.11. ~ 2023.01.
총 5개의 멘토링, 번개 만남, 중고거래, 채팅, 개인 피드 서비스를 하는 MZ 세대를 위한 플랫폼
Git : https://github.com/bmm522/mztalk
Team Leader (6명)
프론트(Vanilla js) + 7개의 모듈(REST API)기반으로 구성된 프로젝트
프론트엔드 팀원이 없어서 전체적인 Front 개발을 담당했습니다.
총 3개의 Login, Gateway, Resource API 서버를 개발했습니다.
배포 과정을 단순화하고 시간 절약을 위해 Docker를 사용했고, AWS ec2서비스를 이용해 배포했습니다.
코드, 패키지 컨벤션을 정했음에도 불구하고, 서비스가 커짐에 따라 복잡도가 증가하였는데, 각 서비스의 네이밍, 데이터 형식 때문에 프론트 작업에 매우 어려움을 느꼈습니다. 이를 통해 프론트 입장을 이해하고, ‘초기 설계 단계에서 프론트의 입장도 고려했으면 어땠을까?’ 하는 아쉬움이 있었습니다.
MZTALK-LoginAPIServer
개인
2022.08. ~ 2022.10.
Spring Security + JWT 기반의 로그인 API 서버
Git : https://github.com/bmm522/mztalk-LoginAPIServer
각 서비스의 인증과 인가 절차를 위해 JWT 기반의 API 서버가 필요하다 생각해 개발했습니다.
구글, 카카오, 네이버 소셜 로그인 개발했습니다.
유저와 관련된 신고, 채팅방 관련 로직 개발했습니다.
Redirect 시에는 헤더에 JWT를 넘겨줄 수 없어, 쿠키를 통해 이를 해결했습니다.
JWT의 유효성이 없으면 RefreshToken을 통해 재발급 받을 수 있게 하였습니다.
MZTALK-GatewayAPIServer
개인
2022.10. ~ 2022.11.
Spring Cloud Gateway 기반 게이트웨이 API 서버
Git : https://github.com/bmm522/mztalk-gateway-server
모듈화 된 각 서비스의 로드밸런싱,
JWT
유효성 검증, CORS 처리를 위해 만든 API 서버입니다.서비스마다 filter를 적용하여 트래픽을 모니터링할 수 있게 했습니다.
CORS 처리를 직접 프로젝트에 맞게 구현하다 보니, 헤더에 대한 전반적인 흐름과 플로우를 이해할 수 있었습니다.
MZTALK-ResourceAPIServer
팀
2022.12. ~ 2022.12.
각 모듈 프로젝트와 AWS S3의 중간다리를 해주는 저장 API 서버
Git : https://github.com/bmm522/mztalk-ResourceAPIServer
각 서비스들의 첨부 파일 저장을 통일하기 위해서 AWS S3를 채택했고, 이를 이용하기 위한 API 서버가 필요하다고 느껴 개발했습니다.
첨부파일과 관련된 CRUD 프로젝트 입니다.
팀원들이 보고 사용할 수 있도록 API 문서를 Swagger2를 이용해서 작성했습니다.
팀원들 모두가 사용하는 api 서버이므로, 일어날 수 있는 예외 사항을 처리해 줌으로써 팀원들이 좀 더 쉽게 에러의 원인을 찾을 수 있고, 금방 해결할 수 있었습니다.
포트폴리오
첨부파일
자기소개
<저는 이런 사람 입니다>
제 개인 프로젝트를 통해 실제 사용자의 요구사항과 실제 운영 환경에서 발생하는 다양한 이슈들을 해결하는 능력을 키웠습니다. 이 경험을 통해 실제 서비스 환경에서도 효과적으로 개발을 진행할 수 있는 역량을 갖추었습니다.
교육 과정에서는 Spring Legacy와 Mybatis를 배웠습니다. 그러나 저는 더 최신의 기술을 사용하고, Rest API 방식의 프로젝트를 경험하고 싶었습니다. 이를 위해 개인 프로젝트를 시작하여 로그인 및 게이트웨이 API 서버를 구현하였고, 학생들 앞에서 프로젝트 발표를 진행하였습니다. 이를 통해 함께 프로젝트를 진행할 팀원들을 모집하였습니다.
이외에도, Rest API와 JPA를 사용한 예제 프로젝트를 제작하여 팀원들에게 강의를 진행하였습니다. 이를 통해 현업에서의 코드 구조와 컨벤션을 프로젝트에 반영하였고, 프로젝트를 성공적으로 완성하였습니다.
프로젝트 과정에서 반 내의 모든 수강생이 git을 잘 이해하지 못하여 협업에 문제가 있을 것을 우려했습니다. 이에 따라, 제가 개인적으로 git의 기본 사용법과 브랜치 전략을 배웠고, 팀장들에게 강의를 통해 이를 전달하였습니다.
또한, docker를 이용한 서버 배포 방법에 대해서도 팀원들에게 강의를 진행하여, 팀원들의 인프라 역량을 향상시키는 데 기여하였습니다.
결국 제 목표는 혼자든 팀원들과 함께 든, 어떤 프로젝트든 성공적으로 완수하는 것입니다. 이를 위해 저는 팀원들의 역량을 최대한 끌어올리는 데 중점을 두고 있습니다.
<개발자가 된 이유>
4년 동안 바리스타로 일하며, 저는 커피의 본연의 맛과 아름다움을 지키는 QC가 되는 것이 꿈이었습니다. 이를 위해 일과 병행하면서 위생사와 식품기사를 준비하였고, 결국 목표했던 회사에 입사하게 되었습니다.
그러나 회사에 입사한 후, 현실은 이상과 다르다는 것을 깨달았습니다. 그러던 중, 저와 가장 친한 친구가 코딩 테스트를 준비하는 모습을 보게 되었습니다. 그의 모습이 굉장히 흥미로웠고, 저도 백준의 문제를 풀기 시작했습니다.
약 100문제를 풀었을 때, 저는 "이것으로 무엇을 할 수 있을까?"라는 생각이 들었습니다. 그래서 생활코딩 님의 html 강의를 시작으로 웹 개발에 입문하게 되었고, 결국 퇴사 후 본격적으로 웹 개발자의 꿈을 갖게 되었습니다.
현재 저는 개발자로서의 미래를 바라보고 있습니다. 제가 만든 소프트웨어가 사람들에게 유용하게 사용되어 세상을 더 나은 곳으로 만드는 데 기여하고 싶습니다. 저의 열정과 끈기를 바탕으로 성장하고 발전하는 모습을 보여 드릴 것입니다.
<팀원과 협업 하기 좋게 코드를 작성하려고 합니다>
저는 프로그래밍에서 특히 코드의 지속적인 개선과 리팩토링에 많은 흥미를 느끼고, 단순히 작동하는 코드를 작성하는 것이 아닌, 항상 확장성을 염두에 두고 설계하려고 합니다.
프로그래밍은 팀워크가 중요한 일이므로, 제가 작성하는 코드는 제게만 의미가 있으면 충분하지 않다고 믿습니다. 코드는 나와 같이 작업하는 동료들도 쉽게 이해하고 효과적으로 활용할 수 있어야 합니다. 이를 위해 저는 가독성과 이해성을 코드 작성의 최우선 고려 사항으로 두고 있습니다.
또한, 저는 상황에 맞는 디자인 패턴을 적용함으로써 코드의 품질을 향상시키려고 합니다. 이와 함께, 유지보수성을 높이기 위해 코드를 작성할 때는 항상 단위테스트를 쉽게 수행할 수 있도록 고려합니다. 이렇게 함으로써, 제가 작성한 코드의 품질과 유지보수성을 동시에 향상시키려는 노력을 지속적으로 하고 있습니다.
교육
KH정보교육원
사설 교육 | 백엔드 개발자
2022.07. ~ 2023.01. | 졸업
을지대학교
대학교(학사) | 식품산업외식학과
2015.03. ~ 2021.08. | 졸업