본문 바로가기
728x90

전체 글247

[240110] CI/CD 공부 (1) CI CI/CD란? Continuous Integration/Continuous Deployment(Delivery)의 약자로, 지속적인 통합과 지속적인 제공을 의미 기본 개념 지속적인 통합(Continuous Integration): 자동화된 빌드와 자동화된 테스트를 제공 지속적인 서비스 제공 (Continuous Delivery) 지속적인 배포(Continuous Deployment): 배포를 자동화하여 배포 시간을 단축하고 코드 결과물을 빠르게 지속적으로 제공 왜 Docker? 애플리케이션 개발과 배포가 편해짐 Docker Container 내부에서 여러 소프트웨어를 설치해도 호스트 OS에 영향이 없음 CI 과정의 테스트에서 Docker를 활용 어떤 서버에 올려도 같은 환경으로 구성된 컨테이너로 동작하기.. 2024. 1. 10.
[240108] Refresh Token 구현 전의 고려 사항 토큰 방식을 사용하는 이유 상태를 서버에 저장하지 않으므로 확장성이 좋음 서버 간의 데이터 동기화 문제를 해결하기 쉬움 -> 하지만 백엔드만 구현하는 프로젝트에서는 refresh token을 서버에서 저장함 RefreshToken을 사용하는 이유 만료기한이 짧은 access token만 사용하는 경우 사용자가 토큰이 만료될 때마다 로그인해야 하는 불편함을 겪게 됨 자동 로그인 구현으로 편의성 증가 Access token의 수명을 짧게 하여 accesstoken 노출되더라도 짧은 시간 내에 만료되게 함으로써 보안성을 높일 수 있음 백엔드 프로젝트에서의 Refresh Token 구현 Redis를 사용하는 이유 인메모리 DB로 빠른 응답이 가능 TTL을 지원하여 토큰의 만료시간을 지정하고 관리하는데 유용함 K.. 2024. 1. 8.
[240106] permitAll()과 shouldNotFilter 프로젝트를 해오면서 사용자의 권한이 필요하지 않은 요청의 경우 WebSecurityConfig에서 permitAll()을 통해 허가해주었다. 하지만 이렇게 설정한 api에 대해서도 성공적으로 반환값이 돌아오지 않는 경우가 있었다. 바로 유효하지 않은 JWT 토큰이 헤더나 쿠키에 들어가 있는 경우이다. permitAll()을 설정해줬을 경우에는 잘못된 토큰이 들어있는 경우에도 요청을 허가해줘야 하는 것이 아닌가? 라는 생각이 들어서 이에 대해 공부해보았다. 문제 상황 WebSecurityConfig 일부 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // CSRF 설정 http.csrf((c.. 2024. 1. 6.
[240104] 심화 프로젝트 마무리 :: 트러블 슈팅 심화 프로젝트 발표를 준비하면서 팀원들이 경험한 트러블 슈팅에 대해서 정리해보고자 한다. 카테고리 및 카드 정렬 문제 칸반보드 협업 툴인 Trello와 비슷한 칸반보드 서비스를 구현하는 프로젝트이기 때문에 카드와 카테고리를 드래그해서 움직이면 해당 카드와 카테고리의 순서가 바뀌게 된다. 이를 구현하는 과정에서 어떤 방법을 사용하는 것이 좋은지에 대한 문제에 부딪히게 되었다. 제안된 방식들 컬럼 테이블의 필드로 json으로 카드 순서를 저장 ex) [1,2,3,4,5] -> [1,2,4,3,5] 카드 테이블의 필드로 전, 후의 카드id를 저장 - 최대 4번 요청 순서 테이블을 만들어서 이용 (1, 2번을 혼합) 변경 전후의 seq 값을 더해서 2로 나눔 일주일이라는 주어진 시간 안에 구현해야 하는 기능이 .. 2024. 1. 4.
[240103] 심화 주차 KPT회고 Keep (계속 이어갔으면 하는 부분) infra 활용해서 하고 싶은 것들 다 해볼 수 있었음 팀원들의 적극적인 참여, 코드 리뷰를 통해 완성도 높은 프로젝트가 나올 수 있었음 컨벤션을 설정하고 지킴으로써 통일성 있는 코드를 작성함 Issue와 PR을 적극적으로 활용함 CI/CD 환경을 구축함으로써 여러 팀원이 개발에 참여했음에도 충돌의 문제 등 불필요한 시간을 보내지 않음 팀원 모두가 Rivew를 작성함으로써 코드 개선에 도움이 됌 컨벤션을 미리 잡고 프로젝트를 시작한 점. 그리고 이를 sample 디렉토리로 프로젝트 시작때 만들어 둔 것. 단순히 문서화 이상으로 어떻게 코드를 작성해야하는지 바로 확인하며 작성할 수 있어서 아주 좋았음 스타일 가이드를 미리 적용해놓고 시작한 점. Google style.. 2024. 1. 3.
[240103] 심화 프로젝트 마무리 :: 컨벤션 지금까지 해왔던 프로젝트들 중에서 가장 알차면서도 힘들었던 심화 프로젝트를 마무리하면서 프로젝트 동안 배운 것들을 조금씩 정리해보려고 한다. 구현 기능, ERD, API 명세, 기술 스택 등은 깃허브 레포지토리의 readme에서 확인할 수 있다. 깃헙 주소: https://github.com/yejin-kingdom/value-together GitHub - yejin-kingdom/value-together: 가치 있는일을 같이 진행하자! 일정 공유 어플리케이션! 가치 있는일을 같이 진행하자! 일정 공유 어플리케이션! . Contribute to yejin-kingdom/value-together development by creating an account on GitHub. github.com 컨벤.. 2024. 1. 3.