-
[Spring] Kafka 채팅 기능 구현 - 1Spring 2023. 12. 19. 04:21
🛠️ 기술 스택1️⃣ WebSocket & STOMP실시간 양방향 통신을 위해 WebSocket을 선택했다.WebSocket 상에서 STOMP 프로토콜을 사용해 메시징의 형식과 규약을 관리할 것이다. 2️⃣ Apache Kafka대규모 메시지 처리를 위해 Kafka를 선택했다.Kafka는 높은 처리량을 감당할 수 있는 데다가 데이터를 신속하게 처리하는 데 이상적이다.RabbitMQ를 사용해도 충분히 채팅을 구현할 수 있지만, 이번에는 Kafka를 사용해보기로 결정했다! 3️⃣ MongoDB채팅 메시지 저장소로 사용할 것이다.NoSQL 데이터베이스로, 채팅 메시지와 같은 비정형 데이터를 관리하기에 적합하다.또한 수평적 확장성이 뛰어나 대량의 데이터를 효율적으로 처리할 수 있어서..
-
[QueryDSL] QueryDSL에서 조인 시 주의사항 | 객체 그래프 탐색Spring 2023. 10. 22. 19:56
QueryDSL에서 groupBy를 사용하는 예제를 공부하던 중, '왜 이렇게 조인을 해야하는지'에 대한 의문을 가지게 되었다. 🔍 기본 조인 방식 먼저, 기본적인 조인 방식을 살펴보자. List result = queryFactory .select(team.name, member.age.avg()) .from(member) .join(member.team, team) .groupBy(team.name) .fetch(); 이 코드는 member 테이블을 기반으로 team 테이블과 조인하는 방식으로 작성되었다. from 절에는 member를 시작점으로 설정하고, join에서는 member와 연관된 team을 찾기 위해 (member.team, team) 파라미터를 사용했다. 이러한 방식은 member가 t..
-
[Spring] @GeneratedValue | 엔티티의 기본 키 생성 전략Spring 2023. 6. 18. 17:23
🔍 @GeneratedValue /* * Copyright (c) 2008, 2020 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0, * or the Eclipse Distribution License v. 1.0 which is available at * http://www.eclipse.org/org/documents/edl-v10.p..
-
[Spring] TDD와 단위 테스트Spring 2023. 6. 18. 00:25
🔎 TDD (test-driven development) TDD는 테스트가 주도하는 개발을 의미한다. 테스트 코드를 먼저 작성하는 것부터 시작한다. RED: 항상 실패하는 테스트 작성 GREEN: 테스트 통과하는 프로덕션 코드 작성 REFACTOR: 테스트 통과하면 프로덕션 코드 리팩토링 🔎 단위 테스트 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미하며, 다음과 같은 이점을 가진다. 개발단계 초기에 문제를 발견하게 도와줌 추후 코드 리팩토링, 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인 가능 기능에 대한 불확실성 감소 시스템에 대한 실제 문서 제공 자동검증 가능 개발자가 만든 기능을 안전하게 보호 기존 기능이 잘 작동되는 것을 보장 테스트 프레..
-
[Spring] Spring Security + JWT 로그인 구현하기 - 4Spring 2023. 6. 16. 14:36
📝 지난 포스팅 ➡︎ Spring Security + JWT 로그인 구현하기 - 3 [Spring] Spring Security + JWT 로그인 구현하기 - 3 📝 지난 포스팅 ➡︎ Spring Security + JWT 로그인 구현하기 - 2 [Spring] Spring Security + JWT 로그인 구현하기 - 2 Spring Security + JWT 로그인 구현 1️⃣ 라이브러리 설정 Spring Security와 JWT를 사용하기 위해 다 suddiyo.tistory.com 지난 포스팅에서 Postman을 사용해서 로그인 기능이 잘 작동하는지 테스트를 해보았다. 이번 포스팅에서는 SpringBootTest와 TestRestTemplate을 이용하여 test code를 직접 작성해보는 방식으..
-
[Spring] Spring Security + JWT 로그인 구현하기 - 3Spring 2023. 6. 15. 17:49
📝 지난 포스팅 ➡︎ Spring Security + JWT 로그인 구현하기 - 2 [Spring] Spring Security + JWT 로그인 구현하기 - 2 Spring Security + JWT 로그인 구현 1️⃣ 라이브러리 설정 Spring Security와 JWT를 사용하기 위해 다음 라이브러리들을 추가해준다. build.gradle dependencies { ... // Spring Security implementation 'org.springframework.boot:sp suddiyo.tistory.com 지난 번에 Spring Security + JWT로 구현한 로그인 기능을 구현해보았는데 이번에는 Postman을 사용해서 로그인 기능이 잘 작동하는지 테스트를 할 것이다! 1️⃣ DB..
-
[Spring] Spring Security + JWT 로그인 구현하기 - 2Spring 2023. 6. 15. 01:43
📝 지난 포스팅 ➡︎ Spring Security + JWT 로그인 구현하기 - 1 [Spring] Spring Security + JWT 로그인 구현하기 - 1 Session vs Token 사용자 인증 방식은 일반적으로 세션 기반 방식과 토큰 기반 방식(JWT)으로 나뉜다. 두 방식은 어느 것이 더 뛰어나다고 하긴 애매하고, 각 방식의 장단점과 요구사항을 분석하여 상 suddiyo.tistory.com 지난 포스팅에서 Spring Security + JWT 로그인 작동 원리를 알아봤으니, 이번 포스팅에서는 본격적으로 기능을 구현해 볼 것이다. 1️⃣ 라이브러리 설정 Spring Security와 JWT를 사용하기 위해 다음 라이브러리들을 추가해준다. build.gradle dependencies { ..
-
[Spring] Spring Security + JWT 로그인 구현하기 - 1Spring 2023. 6. 14. 20:19
📝 지난 포스팅 ➡︎ JWT(Json Web Token) 란? [Spring] JWT(Json Web Token)란? | 구조, 암호화 방법, 장단점 JWT (Json Web Token) : JWT(Json Web Token)란, JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web 토큰이다. JWT는 필요한 정보를 자체적으로 지니는 Self-Contained 방식으로 정보를 안정성 있 suddiyo.tistory.com 🔎 Session vs Token 사용자 인증 방식은 일반적으로 세션 기반 방식과 토큰 기반 방식(JWT)으로 나뉜다. 두 방식은 어느 것이 더 뛰어나다고 하긴 애매하고, 각 방식의 장단점과 요구사항을 분석하여 상황에 맞게 결정하는 것이 좋다. (두 방식의 차..