| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- Array
- 정규식
- SpringBoot
- js
- HashMap
- Eclipse
- math
- java테스트
- CSS
- list
- 문자열
- Visual Studio Code
- 테스트자동화
- ArrayList
- input
- vscode
- IntelliJ
- string
- 자바문법
- 자바
- 배열
- javascript
- Java
- 스프링부트
- 자바스크립트
- 단위테스트
- 인텔리제이
- junit
- junit5
- html
- Today
- Total
목록2026/03/22 (2)
어제 오늘 내일
개발하다 보면 "핵심 로직"과 "부가 로직"이 섞일 때가 있습니다.가장 대표적인 예가 회원가입입니다.회원 정보 DB 저장 (핵심 - 0.1초)가입 축하 메일 발송 (부가 - 3초)가입 축하 쿠폰 발행 (부가 - 0.5초)이걸 한 트랜잭션으로 묶어서 순차적으로 실행하면, 사용자는 가입 완료까지 총 3.6초를 기다려야 합니다. 만약 메일 서버가 죽으면? 가입 자체가 롤백되어 버리는 대참사가 일어납니다.오늘은 이 "기다림"을 없애는 비동기 처리와, 서비스 간의 의존성을 끊어내는 이벤트 기반 설계를 알아보겠습니다.1. 나중에 해! 비동기 처리 ()가장 쉬운 해결책은 "메일 발송은 다른 쓰레드(Thread)가 알아서 하고, 넌 바로 응답해!"라고 하는 것입니다. 스프링은 어노테이션 하나로 이걸 지원합니다.① 설정..
개발을 하다 보면 이런 고민에 빠집니다."DB 테이블이랑 똑같은 클래스(Entity)가 있는데, 굳이 또 DTO(Data Transfer Object)를 만들어야 하나요?"귀찮아서 그냥 Entity를 반환해 버리면 당장은 편하지만, 나중에 치명적인 보안 문제와 무한 루프(Circular Reference)에 빠지게 됩니다. 오늘은 왜 DTO를 써야 하는지, 그리고 변환은 어디서 하는 게 정석인지 명쾌하게 정리해 드립니다.1. Entity를 절대 밖으로 꺼내지 마세요!@Entity가 붙은 클래스는 데이터베이스 그 자체입니다. 이걸 컨트롤러에서 그대로 반환(return entity)하면 안 되는 3가지 이유가 있습니다.API 스펙이 DB에 종속됨: DB 컬럼명을 바꾸면 API 스펙도 강제로 바뀝니다. (프론..
