[인증/인가] 쿠키 VS 세션 VS 토큰 (JWT) 방식 중 무엇을 사용할까?
·
Spring/기타
대표적으로 사용자의 인증/인가를 처리할 때 사용하는 방식이 다음과 같이 3가지가 있습니다. 1. 쿠키 방식 2. 세션 방식 3. JWT 토큰 방식 위의 3가지 방식들의 장단점을 살펴보고, 무엇을 사용해야 할지 알아보도록 합시다! 1. 쿠키 인증 방식 - 클라이언트가 인증 정보 관리 (stateless) 먼저, 쿠키 인증 방식입니다. 쿠키 인증 방식은 쿠키에 사용자의 인증 정보를 담아서 인증하는 방식입니다. 인증/인가 Flow는 다음과 같습니다. 1. 클라이언트가 서버에 첫 로그인 인증 요청을 보내면, 서버에서 응답으로 쿠키에 사용자 인증 정보를 담아서 보낸다. 2. 서버에서 응답한 쿠키를 클라이언트에서 저장하고, 인증/인가 요청 시마다 서버로 요청한다. Flow만 보더라도, 인증/인가 작업이 상당히 쉽고..
[JPA] JPA 1:N 관계에서 연관관계 주인을 1 대신 N에 두는 이유
·
Spring/JPA
이전에 JPA를 사용해서 1:N 연관관계 매핑을 할때는 연관관계 주인이 1 보다 N에 두는 것이 좋다고 배워서 관성적으로 N이 연관관계 주인으로, FK를 가지게 했습니다. 그러나 왜 연관관계 주인이 1이 되면 좋지 않은 건지 제대로 알지 못하고 사용하고 있었기 때문에 연관관계 주인이 1쪽이 되었을 때의 어떤 점이 안 좋은지를 살펴보려고 합니다! 예시는 Member와 Post의 1:N 관계로 설명하도록 하겠습니다! (멤버가 여러 게시글을 작성할 수 있고, 게시물에는 1명의 작성자만 존재한다고 해봅시다!) 🎯 1. 연관관계의 주인이란? 들어가기에 앞서서, 연관관계의 주인이란 무엇을 말하는지 알아봅시다! 우선 '연관관계의 주인' 이라는 용어가 규칙으로 정해진 용어는 아니지만 JPA를 사용할 때 해당 용어로 많..
[Spring] 스프링 이벤트를 사용하여 도메인 의존성 분리하기
·
Spring
프로젝트를 진행하던 중 스프링 이벤트를 사용하게 되었습니다! 왜 스프링 이벤트를 사용했는지, 어떻게 사용하는지, 사용 시 고려할 점 등에 대해 자세히 알아보도록 하겠습니다! 0. 스프링 이벤트 도입 배경 프로젝트를 진행하면서 다음과 같은 요구사항이 존재했습니다. 팀 캘린더의 일정이 등록, 수정, 삭제되면 팀 피드에 일정 알림이 생성된다. 위의 디자인처럼 팀 피드 공간에 팀 캘린더의 일정이 등록, 수정, 삭제되면 알림이 생성되도록 하는 요구사항이었습니다. (여기서 알림은 실시간 알림이 아니라 게시글처럼 생성되는 알림을 의미합니다.) 스프린트를 거쳐서 팀 캘린더의 일정 등록, 수정, 삭제 로직은 구현되어 있는 상태였으므로 처음에는 단순하게 일정 알림 기능을 추가하면 된다고 생각해서 팀 캘린더 서비스에 다음과..
팀바팀 프로젝트 4주차 회고
·
우아한테크코스 5기 팀바팀 Project/회고
✌🏻 23.07.18 (화) ~ 23.07.19 (수) - CI & CD & 인프라 구조 구축 이 날은 CI, CD, 인프라 구조 구축을 진행했다!! 개인적으로 CI, CD와 인프라쪽은 지식이 많이 없었어서 걱정했는데, 백엔드 모두가 하나의 모니터를 보면서 같이 몹 프로그래밍을 진행해서 잘 진행했다!! CI CD를 1~2명이 작업 분배를 해서 구축한 팀도 있었지만 나는 관련 지식이 많이 없었기 때문에 몹 프로그래밍으로 다같이 구축한 게 도움이 많이 되었다!! 처음에는 하루 만에 다 끝낼 수 있을 거라고 생각했는데 역시나 처음 일정 추정의 2~2.5배는 걸리는 것 같다 ㅋㅋㅋㅋ 이틀 정도를 야근해서 겨우 끝낼 수 있었다,, CD 과정에서 Github actions를 사용해서 CD를 사용하는 레퍼런스가 많이..
[설계] Git Branch 전략이란? & Git Branch 전략 알아보기 (Git Flow, GitHub Flow)
·
우아한테크코스 5기 팀바팀 Project/설계
🙇🏻‍♂️ 0. 들어가기 전 이번 팀바팀 프로젝트에서 협업을 처음 경험하고, Git Branch 전략에 대해 처음 들어보게 되었습니다. 이전까지는 협업을 하지 않고, 해봤자 페어 프로그래밍이 전부였기 때문에 Git Branch에 대해 신경쓰지 않았습니다. 팀원들께 죄송하게도, Git Branch 전략을 정하기 전에는 지식이 많이 없었습니다. 원래 정하기 전에 많은 것을 알아갔어야 하는데 반대로 되어버려서 죄송할 따름이네요,, 🙇🏻‍♂️ 현재 팀바팀의 Git Branch 전략은 정한 상태이지만, 학습 측면에서 어떤 Git Branch 전략이 있는지 자세하게 알아보도록 합시다! 📘 1. Git Branch 전략이란? 다양한 Git Branch 전략을 알아보기 전에, Git Branch 전략이 무엇인지 간략하..
[회고] 팀바팀 프로젝트 3주차 회고
·
우아한테크코스 5기 팀바팀 Project/회고
✌🏻 23.07.10 (월) - 첫 스프린트 회의 & 파트별 회의 우리 팀은 팀 문화를 정할 때 스프린트 방법을 사용해서 프로젝트를 진행하기로 했다! 1차 데모데이 기간에는 팀의 전체적인 방향을 정하느라 스프린트 개발 회의를 하지 못했다. 그래서, 이번 주차 시작인 월요일에 첫 스프린트 회의를 가졌다. 우리 팀의 스프린트 기간은 데모데이 주기인 2주로 설정했다. 그래서 회의에서 2주동안 어떤 기능을 개발할지 정했다. '캘린더' 기능을 완성해보기로 했고, 이 과정에서 일정 추산을 진행하기로 했다! 일정 추산은 내가 제안한 '스토리 포인트' 방법? 을 사용하게 됐다. 진행해보고 아쉬운 점은, 나도 처음 해보고 다들 처음이다 보니 명확한 기준 없이 진행이 됐던 것 같다. 내가 제안한 만큼 내가 좀 더 알아보고..
[Spring] LocalDateTime 원하는 Format으로 바인딩하기 (feat.@DateTimeFormat, @JsonFormat)
·
우아한테크코스 5기 팀바팀 Project/Trouble Shooting
이 글은 팀바팀 기술 블로그에 작성된 글입니다. https://team-by-team.github.io/local-date-time-binding/ LocalDateTime 원하는 Format으로 바인딩하기 (feat.@DateTimeFormat, @JsonFormat) 해당 글은 우아한테크코스 5기 팀바팀 크루 성하가 작성했습니다! 📘 0. 일정 등록 API Request Body API 명세를 정할 당시에는 LocalDateTime이 요청으로 들어왔을 때 어떻게 Request Dto의 필드로 바인딩되 team-by-team.github.io 📘 0. 일정 등록 API Request Body API 명세를 정할 당시에는 LocalDateTime이 요청으로 들어왔을 때 어떻게 Request Dto의 필..
[회고] 팀바팀 프로젝트 2주차 회고
·
우아한테크코스 5기 팀바팀 Project/회고
✌🏻 23.07.03 (월) - 서비스 컨셉 디자인 정하기 이 날은 우리 팀바팀 서비스의 전체적인 컨셉 디자인을 정하는 날이었다! 이벤트 스토밍을 통해 기능 컨셉을 도출하고, 해당 기능을 어떻게 디자인할지 모든 팀원 각자가 피그마에 디자인을 해오기로 했다! 나 같은 경우는 진짜 디자인에 소질이 1도 없었는데 레퍼런스도 많이 찾아보고 시간 박치기를 했다 ㅠㅠ 이렇게 디자인 시안을 만들고, 모두가 만든 디자인을 소개하면서 취합해나갔다. 감사하게도 기능별 디자인은 내 디자인 시안을 참고해서 만들기로 결정이 났다! ✌🏻 팀원 모두가 각자 너무 잘해와서 너무 감사했다!! 😃 디자인을 취합할 때, 나는 이런 분야에 너무 문외한이라서 의견을 많이 못 냈던 것 같다. 뭔가 말하려고 했었는데 자꾸 다시 삼킨 적이 많았던..
[JPA] @JoinColumn 파헤치기 (feat. JPA 연관관계별 사용)
·
Spring/JPA
✌🏻 0. 들어가기 전 JPA 강의 중에 @JoinColumn을 마스터하면 JPA 연관관계를 어느정도는 다 알 수 있다고 들었다. 그래서, 여러 JPA 개념 중에 @JoinColumn에 대해 파헤쳐보면서 JPA 연관관계를 이해해보려고 한다! 앞으로 설명할 연관관계에서 연관관계별로 다음과 같은 예제로 설명하겠다! 1:1 - student lecture 1:N / N:1 - Line(1) Station(N) 🎯 1. @JoinColumn 이란? JoinColumn 어노테이션 클래스를 번역해보면서 이해해보자. JoinColumn의 최상단 주석에는 JoinColumn에 대한 설명이 나와있다. 맨 위의 내용을 요약하면 다음과 같다. Entity 연관관계 또는 Element Collection을 연결하기 위한 Co..
[회고] 팀바팀 프로젝트 1주차 회고
·
우아한테크코스 5기 팀바팀 Project/회고
프로젝트를 시작하고, 최대한 주차별로 가벼운 회고를 남겨보려고 한다! 프로젝트의 시작, 회고의 시작... 1주차 시작해보자구~ ✌🏻 23.06.27 (화) - 프로젝트 시작 🏃🏻‍♂️ 1. 팀원 대면 드디어 팀원들을 처음 보게 되었다! 우리 팀은 나, BE 엔델, BE 로이, BE 필립, FE 유스, FE 요술토끼, FE 루루 이렇게 총 7명이다! 프론트엔드와는 친분이 없는게 당연했지만 백엔드에서도 그렇게 친한 사람은 없었어서 조금 걱정이 되었다. 단지 친하지 않아서 어색할 것 같았을 뿐이지, 그래도 이전에 몇 번 얘기를 나눴을 때 다들 괜찮았던 사람들이라서 좋은 사람이라는 인식은 있었다!! 😃 4~5개월 동안 같은 목표를 가지고 잘 달려보자고 혼자 다짐했다 ㅋㅋㅋㅋ 👍🏻 🌈 2. 팀 자리 배치 10시에..
BE_성하