๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐฑ์—”๋“œ32

Entity ์—์„œ ์กฐ๊ฑด์„ ์ž๋™์œผ๋กœ ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•๋“ค (@SQLRestriction, @Where, @Filter) Repository์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ๋•Œ, JPA์— ์ง์ ‘ IsDeletedFalse ์ด๋Ÿฐ์‹์œผ๋กœ ๋ถ™์—ฌ์ฃผ๊ฒŒ ๋˜๋ฉด ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์ด ์กด์žฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ์กฐ๊ฑด๋“ค์„ ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค.   1. @SQLRestriction@SQLRestriction("deleted_at IS NULL")  SQL๋ ˆ๋ฒจ ์กฐ๊ฑดHibernate๊ฐ€ ์‹ค์ œ SQL์„ ์ƒ์„ฑํ• ๋•Œ ์ง์ ‘ ์กฐ๊ฑด์„ ๋ถ™์ž„but, sql ์— ์ง์ ‘ ์‚ฝ์ž…๋˜์–ด DBMS ์˜์กด์ ์ผ ์ˆ˜ ์žˆ์Œ 2. @Where@Where(clause = "deleted_at IS NULL")HQL ๋ ˆ๋ฒจ์—์„œ๋งŒ ์กฐ๊ฑด๋ถ€์—ฌํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ ๋ชจ๋“  ์กฐํšŒ ์ฟผ๋ฆฌ์— ์ž๋™์œผ๋กœ Where์ ˆ ์ถ”๊ฐ€๋…ผ๋ฆฌ ์‚ญ์ œ ๊ฐ™์€ ๋‹จ์ˆœ ์กฐ๊ฑด ํ•„ํ„ฐ์— ์ข‹์ŒํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ”์ธ๋”ฉ์ด ๋ถˆ๊ฐ€ํ•˜๊ณ , ์กฐ๊ฑด์ด ๊ณ .. 2025. 4. 14.
Feign Client ํ˜ธ์ถœ ์‘๋‹ต Dto์˜ ํ•„๋“œ๋ช…์ด ๋‹ค๋ฅผ๋•Œ Feign Client ํ˜ธ์ถœ์‹œ ์‘๋‹ต dto์˜ ํ•„๋“œ๋ช…์ด ๋‹ค๋ฅด๋ฉด ๊ฐ’์„ ์ œ๋Œ€๋กœ ๋ฐ›์•„์˜ค์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Product์—์„œ ProductReadResponse๋ฅผ ์‘๋‹ตํ•ด์ฃผ๊ณ ,๊ทธ๊ฑธ LimitedProduct์—์„œ ๋ฐ›์•„์˜ค๋ ค๊ณ  ํ• ๋•Œ,ProductReadResponse ์—๋Š” productId์˜ ํ•„๋“œ๋ช…์ด id๋กœ ๋˜์–ด ์žˆ๋Š”๊ฒฝ์šฐ์—๋Ÿฌ๋ฅผ ๋ฑ‰์–ด๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด @JsonProperty ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์–ด๋–ค ํ•„๋“œ์™€ ๋งคํ•‘ํ•ด์ฃผ๋Š”์ง€ ๋ช…์‹œํ•ด์ฃผ๋ฉด ๊น”๋”ํ•˜๊ฒŒ Dto๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! package com.sparta.limited.limited_service.limited_product.infrastructure.feign.dto;import com.fasterxml.jackson.annotation.JsonPrope.. 2025. 4. 14.
Git hub Issue template ๋งŒ๋“ค๊ธฐ API ๋‹จ์œ„๋ณ„๋กœ Issue๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉดํ•ด๋‹น API ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด Todo List๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์ข‹๊ณ , ๋ธŒ๋žœ์น˜๋ฅผ ์ด์Šˆ ๋ฒˆํ˜ธ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ฒด๊ณ„์ ์ธ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์ข‹๋‹ค.๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ git hub issue๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์“ฐ๊ธฐ ์ข‹์€ ํ…œํ”Œ๋ฆฟ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. ๋จผ์ € git hub์—์„œ repository ์ ‘์† ํ›„ settings๋ฅผ ํด๋ฆฐํ•œ๋‹ค.settings์— ๋“ค์–ด์™€์„œ ์Šคํฌ๋กค์„ ์กฐ๊ธˆ๋งŒ ๋‚ด๋ฆฌ๋ฉด Set up templates ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.  ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Add Template : select ํด๋ฆญ ํ›„ Custom issue template ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ์ƒ๊ธด๋‹ค. ์ € ์—ฐํ•„ ๋ชจ์–‘์˜ ํŽธ์ง‘ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋งŒ๋“ค์–ด๋‘” ํ…œํ”Œ๋ฆฟ์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค! ์ด๋•Œ ์ฃผ์˜ํ• ์ .. 2025. 4. 11.
๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์‚ญ์ œ๊ฐ€ ์•ˆ๋˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ VPC ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๋•Œ๋ฌธ์— VPC ์‚ญ์ œ๊ฐ€ ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.  EC2 ์˜ ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณด์™„ -> ๋„คํŠธ์›Œํฌ ๋ฐฉํ™”๋ฒฝ ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์—์„œํ•ด๋‹นํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜, ์—ฐ๊ฒฐ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ด์œ ๋กœ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ–ˆ๋‹ค. ํ•ด๋‹น ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ์ •๋ณด๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ  ์„ค๋ช…: **RDSNetworkInterface**์š”์ฒญ์ž ID: amazon-rds์š”์ฒญ์ž ๊ด€๋ฆฌํ˜•: ์˜ˆ (YES)์—ฐ๊ฒฐ ๋Œ€์ƒ: ์—†์Œ (์ง์ ‘ ์ธ์Šคํ„ด์Šค ID๊ฐ€ ์—†๊ณ , RDS๊ฐ€ ๊ด€๋ฆฌ ์ค‘) ์ธ ๊ฒƒ์„ ํ™•์ธ. ์ด ENI๋Š” ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋œ RDS์ธ์Šคํ„ด์Šค๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š์œผ๋ฉด ์ œ๊ฑฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.๋”ฐ๋ผ์„œ RDS ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด, ENI๋„ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค. ํ˜น์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์˜.. 2025. 3. 28.
Spring Boot์—์„œ Bean ์ƒ๋ช…์ฃผ๊ธฐ์™€ ์ดˆ๊ธฐํ™” ๋ฐ ์†Œ๋ฉธ ๊ณผ์ • ๋ชฉ์ฐจ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ์˜ ์ฃผ์š”๋‹จ๊ณ„Bean ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•Bean ์†Œ๋ฉธ ๊ณผ์ •โœ… ๋นˆ ์ƒ๋ช…์ฃผ๊ธฐ์˜ ์ฃผ์š” ๋‹จ๊ณ„๊ฐ์ฒด ์ƒ์„ฑ -> @Component, @Bean๋“ฑ์„ ํ†ตํ•ด Bean ์ƒ์„ฑ์˜์กด์„ฑ ์ฃผ์ž… (DI, Dependency Injection) -> ํ•„์š”ํ•œ ์˜์กด์„ฑ์ด ์ฃผ์ž…๋จ์ดˆ๊ธฐํ™” ๊ณผ์ • -> @PostConstruct, InitializingBean, init-method ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ์„ค์ • ์ˆ˜ํ–‰์‚ฌ์šฉ(Usage) -> ์ •์ƒ์ ์œผ๋กœ ๋นˆ์ด ์‚ฌ์šฉ๋จ์†Œ๋ฉธ(Destruction) -> @PreDestroy, DisposableBean, destroy-method ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ฆฌ ์ž‘์—… ์ˆ˜ํ–‰Garbage Collection -> Spring ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋” ์ด์ƒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด GC๋Œ€์ƒ์ด ๋จ  โœ… Bean ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•1๏ธโƒฃ @PostCon.. 2025. 3. 10.
API Gateway ์™€ Kafka โœ… API Gateway vs Kafka API Gatewayํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ์ ์ ˆํ•œ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…์ปจํŠธ๋กค๋Ÿฌ ๋‹จ (HTTP ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์„œ๋น„์Šค๋กœ ์ „๋‹ฌ)ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๋ถ€๋‹ด์„ ์ค„์ผ ๋•ŒKafka (์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ†ต์‹ )์„œ๋น„์Šค ๊ฐ„ ์ง์ ‘ ํ˜ธ์ถœ ์—†์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ์„œ๋น„์Šค ๋‹จ (๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰ ํ›„ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ)๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ์„œ๋น„์Šค ๊ฐ„ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ์ค„์ผ ๋•Œ ๐Ÿ“Œ ๋‘ ๊ฐ€์ง€ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํด๋ผ์ด์–ธํŠธ๋Š” API Gateway๋ฅผ ํ†ตํ•ด ๋‹จ์ผ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ์—์„œ ์ ‘๊ทผ๋‚ด๋ถ€ ์„œ๋น„์Šค ๊ฐ„์—๋Š” Kafka๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋™๊ธฐ ํ†ต์‹  (์˜ˆ: ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋˜๋ฉด order-service๊ฐ€ user-service์— ์•Œ๋ฆผ์„ ๋ณด๋ƒ„)์ฆ‰, Gateway + Kafka ์กฐํ•ฉ์€ ์™„๋ฒฝํ•œ ๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•œ ์กฐํ•ฉ! ๐Ÿ“Œ ์˜ˆ์ œํด๋ผ์ด์–ธํŠธ๊ฐ€ .. 2025. 2. 26.