미리보기
기본 정보

안녕하세요! 저는 컴퓨터응용기계과 전공 과정중G-Code를 통해 기계와 대화하는 프로그래밍에 매력을 느껴 웹 개발 공부를 시작했습니다. 코드를 작성하고, 개발을 할 때 깊게 몰입해 시간이 어떻게 가는지 모르고 몰입하는 저의 모습에 개발자란 직업의 적성을 느꼈습니다. ‘생명주기가 긴 Application을 개발하자!’ 라는 마음으로 어떻게하면 확장성있고, 유지 보수가 편한 코드를 작성 할 수 있을까 고민하며 개발하고있습니다. - 확장성 있는 코드 작성을위해 layer간 의존성을 낮추려 노력하고, 유지 보수 가 편한 코드작성을 위해 테스트 코드를 작성해 테스트 케이스라는 안전망안에서 공격적인 Refactoring을 진행하고있습니다.
기술 스택
Java, TypeScript, Spring Boot, Spring Security, JPA, MySQL, Docker
프로젝트
TomorrowLand
개인 프로젝트
2023.12. ~ 2024.02.
[ 지식정보 공유 커뮤니티 사이트 ]
질문자: 20 Point를 차감하고 답변을 채택
답변자: 답변이 채택될시 50 Point 보상 ( Point에 따른 사용자 Level 존재 )
답변글은 질문자 본인만 확인 가능한 시스템.
-기능 구현
JWT 를 통한 인증 및 인가 시스템 구축.
- AccessToken → Web Storage 저장
- RefreshToken → Cookie 저장
AWS Cloud Image Upload , Download 기능 구현
- Multi Part가 아닌 Octet-Stream을 활용해 간편하고 빠른 이미지 업로드 기능 구현
조회수 및 좋아요 기능의 동시성 문제 해결
- 낙관적 Lock 과 비관적 Lock 중 비관적 Lock 을 활용해 동시성 문제 해결
- 성능 테스트를 위해 Jmeter 활용.
Spring REST Docs 를 활용해 BackEnd API 문서화 진행
- @AuthenticationPrincipal Error로 인해
MockMvc를 설정할 때 standAloneSetup() 가 아닌 @AutoConfigureRestDocs 활용해 해결.
Lyerd Architecture 사용, Layer들이 상위 Layer를 의존하지 않도록 구현
- 상위 Layer를 의존하지않게 확장성 있는 Application 개발
그 외 프로젝트를 개발하며 고민했던 점들 …
- Teat Code에 관한 고민
- Testable Code를 만들기위해 AWS S3와 같은 외부 API 분리 ( 관심사의 분리 진행 )
- 외부 API 혹은 외부 라이브러리의 API 또한 테스트를 반드시 진행해야하는지에대한 고민
- 각 계층별 테스트의 목적에 관한 고민 ( Controller 계층에서 테스트해야하는 점들 학습 )
MultiplexShop
그린아트컴퓨터학원
2023.08. ~ 2023.09.
다목적 복합 쇼핑몰 웹사이트입니다.
- 기여한 내용
사용할 기술 스택,아키텍쳐, 패키지 구조, 방향성 등 팀프로젝트내 컨벤션 도입
- 협업을 하는데에 있어 서로의 코드를 이해하지못하거나 헷갈리지않도록 Git commit log, Method 및 Class 작성시 컨벤션을 지정했습니다.
- 테스트 코드 작성 용이함을 위해 계층형 아키텍쳐를 적용했습니다.
- 개발단계 H2 DataBase → 운영단계 MySQL
- 개발 단계에서 H2를 사용함으로 테스트 코드 작성시의 편리함
고객문의 게시판 및 상품 게시판 CRUD 개발
- 게시판 CRUD와 AJAX를 활용한 댓글 기능을 개발했습니다.
- 이미지파일을 User가 직접 업로드를 하여 외부 요청에서온 파일 처리를 할 수 있는 기능을 구현했습니다.
Sping Interceptor를 활용한 User의 인증 및 인가 기능
- Interceptor 를 공부하며 WAS부터 Dispatcher Servlet을 거쳐 Handler까지
Spirng의 기본 구조를 이해 후 인증 및 권한부여 시스템을 개발했습니다. - 또한 User가 접속하려는 URL를 Interceptor 를 통해 로그를 Console에 남기도록 적용했습니다.
- Session 을 이용해 User의 로그인 기능을 구현했습니다.
- Interceptor 를 공부하며 WAS부터 Dispatcher Servlet을 거쳐 Handler까지
Junit을 활용한 자동화 테스트 코드 작성
- @SpringBootTest @Webmvctest 와 테스트코드 통합 클래스를 개발해
테스트 실행시 매번 Spring Boot 서버가 올라가지않고 빠르게 실행되도록 개발했습니다.
- @SpringBootTest @Webmvctest 와 테스트코드 통합 클래스를 개발해
- Presentation Layer 테스트시 외부에서 필요한 요청의 경우 Mock을 활용했습니다.