분류 전체보기196 일대다 단방향 연관관계를 피하고 싶어서 바버샵 프로젝트의 핵심은 뭘까? 뭐긴 뭐야 당연히 바버샵이지. 바버샵 테이블을 설계하면서 가장 고민한 부분이 '근무 중인 바버에 대한 정보는 어떻게 담을까'였다. 원장에 대한 정보는 바버샵 -> 사용자의 일대일 연관관계를 맺어주면 간단하게 해결할 수 있다. 문제는 근무 중인 바버에 대한 정보다. 개념적으로는 바버샵 -> 사용자의 일대다 연관관계가 된다. 반대로 보면 사용자 -> 바버샵의 다대일 관계로 풀어낼 수도 있다. 최근 프로젝트를 진행하고 JPA와 관련한 공부를 하면서 일대다 단방향 관계를 만드는 것은 썩 바람직하지 못하다고 생각하게 되었다. 데이터베이스 관점에서는 키 관리의 어려움이 있으며, 코드 레벨에서는 더 중요한 도메인이 덜 중요한 도메인에 의존하게 된다. 예를 들어, 게시글과 댓글이라는 예.. 2024. 2. 21. JWT 돌아보기 세션, 쿠키, 토큰의 인가 방식 중에 우리는 왜 굳이 토큰을 사용할까? 라고 물어보면 누구나 쿠키보다 보안이 뛰어나고 세션보다 서버 부하가 적다는 대답을 할 수 있다. 그럼, 왜 쿠키보다는 보안이 뛰어나고 세션보다는 서버 부하가 적을까? 이유를 알아야 '보안이 좀 더 낫고, 서버 과부하가 안와요'라고만 대답해도 찰떡같이 알아들을 수 있다. 이번 면접에서 JWT와 관련한 질문을 받았고, 해당 내용을 까먹어서 제대로 답변하지 못했다. 아쉬운 부분이다. JWT의 구조 JWT는 위와 같은 세 부분의 구조로 이루어져있다. 중요한 것은 서명, 시그니처 부분이다. JWT가 쿠키에 비해 보안적인 측면에서 좀 더 나은 이유가 된다. - Header 헤더에는 토큰의 타입과 서명에 적용된 알고리즘이 담겨있다. 형태 예시는 .. 2024. 2. 20. <2/20> 초심 찾기 네 번째 면접이자, 세 번째 기술면접을 시원하게 말았다. 최근 되도 않는 매너리즘 비슷한 것에 빠져있었는데, 어제 면접을 말아먹고 오늘 아르바이트를 하는데 정신이 번쩍 들었다. 이대로는 안된다. 취준 기간이 한 달 한 달 길어질 때마다, 주변의 압박, 스스로의 조급함에 받는 스트레스가 상당했다. 문제는 이 스트레스의 방향이 나로 향해서, 나를 발전시키는 원동력으로 삼아야 하는데 그렇지 못했다는 것이다. 왜 이렇게 취업이 안될까. 어디든 갈 수만 있다면 좋겠다. 굉장히 소모적인 생각만 늘었다. 벌써 세 번째 기술 면접이었고, 세 번의 기술 면접은 모두 신입 개발자도 충분히 답변할 수 있는 수준의 질문들로 이루어졌다. 첫 번째는 어떤 질문이 이뤄질지 몰라서, 두 번째는 긴장해서라는 핑계를 댈 수 있었지만. .. 2024. 2. 20. DB Entity -> Domain Entity로의 전환은 어느 계층에서 담당하는 것이 옳을까 헥사고날 아키텍처를 괜히 적용했나 싶다. 고민해야 할 영역이 지나치게 많아진 느낌이다. 지금 내 수준에서 이런 문제들에 대한 최선의 답안을 찾아내는 것이 가능할까? 싶은데, 뭐 그렇다고 고민하는 시간이 의미없는 것은 아니니까 일단은 생각해볼만 하다고 여겨지는 영역에 대해서는 최선의 답을 찾아내고자 한다. 기존의 ORM 전략을 사용한 프로젝트에서는 데이터베이스 계층에서 사용되는 엔티티가 곧 도메인 엔티티의 역할을 함께 했다. 이번 프로젝트에서는 ORM을 사용하지 않고 데이터베이스 엔티티와 도메인 엔티티를 분리했다. 외부 데이터베이스와 내부 도메인 로직은 확실히 분리하고자 하였고, 임피던스 불일치 문제 같은 데이터베이스 레벨의 문제가 도메인 로직에 스며드는 것을 방지하고자했다. 그러나 결국 서버는 데이터베이.. 2024. 2. 14. 웹소켓은 왜 쓸까? 구글에 '스프링 채팅 기능'을 검색하면 웹소켓을 활용해 스프링 채팅 기능을 구현했다는 글이 수십페이지가 검색된다. 이 사람들은 왜 기본적인 통신 방법인 HTTP를 사용하지 않고 웹소켓이라는 기술을 선택해서 채팅 기능을 구현했을까. 웹소켓을 사용하는 것이 어떤 이점이 있을까. 이를 알아보면 웹소켓을 사용해서 채팅 기능을 구현하는 당위성이 생길 것이다. TCP VS UDP 웹소켓이고 HTTP고 알아보기 전에 TCP와 UDP를 먼저 알아보자. 그래도 기본적인 통신 프로토콜은 알고 진행하는게 낫지 않겠는가? TCP, UDP는 모두 데이터 송신을 위한 통신 프로토콜이다. 둘의 가장 큰 차이는 우리가 통신하고 있다는 걸 알고있냐, 모르냐의 차이라고 할 수 있다. 위의 표에서 확인할 수 있듯이, TCP는 연결형 서비.. 2024. 2. 7. 이전 1 2 3 4 5 6 ··· 40 다음 반응형