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

์ „์ฒด ๊ธ€60

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜(First Class Collection)์— ๋Œ€ํ•ด ์•ฝ ๋‘๋‹ฌ์ „ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์ •๋ ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. // ์•ก์…˜ ์•„์ดํ…œ ๋ชจ๋‘ ๋ฝ‘์•„์˜ค๊ธฐ List idList = doneRetrospects.stream().map(Retrospect::getId).toList(); List actionItemList = actionItemRepository.findAllByRetrospectIdIn(idList).stream() .sorted((a, b) -> { if(a.getIsPinned() && b.getIsPinned() && a.getActionItemStatus().equals(b.g.. 2024. 10. 9.
[MSA / Spring Cloud] Spring Cloud MSA ํ”„๋กœ์ ํŠธ์—์„œ CORS ์„ค์ •์— ๋Œ€ํ•ด (feat. 403 error) ๋ถ€ํŠธ์บ ํ”„ ํ”„๋กœ์ ํŠธ์˜ "๋™์ƒ์ด๋†"์—์„œ Spring Cloud ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ MSA ํ”„๋กœ์ ํŠธ ์„ธํŒ…์„ ๋งก์•˜๋Š”๋ฐ์š”์ œ๊ฐ€ MSA ์„ธํŒ…์„ ํ•˜๋ฉฐ CORS ์„ค์ •์— ๋Œ€ํ•ด ๋†“์ณค๋˜ ๋ถ€๋ถ„๊ณผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๊ฒƒ์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋™์ƒ์ด๋†์˜ MSA ์•„ํ‚คํ…์ฒ˜๋™์ƒ์ด๋† ํ”„๋กœ์ ํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ MSA ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.8081 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” vue ํ”„๋กœ์ ํŠธ๊ฐ€ 8080 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” API Gateway์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉดAPI Gateway๋Š” ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” Eureka ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฐ ๋ชจ๋“ˆ์˜ IP, Port ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๊ณ  ์ ์ ˆํ•œ ๊ณณ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ์ด์ฃ .(API gateway์™€ Eureka๋ฅผ ์ œ์™ธํ•œ ์„œ๋ฒ„๋“ค์€ ์œ ๋™ํฌํŠธ๋ฅผ ์“ฐ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Eureka๋ฅผ ํ†ตํ•ด IP, Port๋ฅผ ์•Œ์•„๋‚ด๋Š” .. 2024. 10. 3.
[Spring Cloud] MSA ๊ตฌ์กฐ์—์„œ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ (Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException) ๋™์ƒ์ด๋† ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ axios ์ธํ„ฐ์…‰ํ„ฐ ์„ธํŒ…์„ ๋งก์•˜๋Š”๋ฐ์š”.์ธํ„ฐ์…‰ํ„ฐ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„œ๋ฒ„์— ๊ฐ„๋‹จํ•œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋Š”๋ฐ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค..  API Gateway์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€ ์ฐํ˜€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 2024-09-28T12:02:38.403+09:00 ERROR 80418 --- [api-gateway] [ctor-http-nio-2] a.w.r.e.AbstractErrorWebExceptionHandler : [d48b9c9b-243] 500 Server Error for HTTP GET "/member-service/member/healthcheck"io.netty.channel.ConnectTimeoutE.. 2024. 9. 28.
[Spring / FCM] FCM ์›น ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ตฌํ˜„๊ธฐ (์„œ๋ฒ„ ํŽธ) ๋ถ€ํŠธ์บ ํ”„์—์„œ ์ตœ์ข… ํ”„๋กœ์ ํŠธ "๋™์ƒ์ด๋†"์„ ์ง„ํ–‰ํ•˜๋ฉฐ FCM์„ ์ด์šฉํ•œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ๋งก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 1. ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑํ”„๋กœ์ ํŠธ ์„ค์ • > ์„œ๋น„์Šค ๊ณ„์ • > ์ž๋ฐ”๋กœ ๋“ค์–ด๊ฐ„ ํ›„, ํ•˜๋‹จ์— ์žˆ๋Š” "์ƒˆ ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋น„๊ณต๊ฐœํ‚ค๋ฅผ ๋‹ค์šด ๋ฐ›์•„์ค๋‹ˆ๋‹ค. ๋‹ค์šด ๋ฐ›์€ ๋น„๊ณต๊ฐœ ํ‚ค๋Š” resources๋กœ ์˜ฎ๊ฒจ์ค๋‹ˆ๋‹ค!๋™์ƒ์ด๋†์˜ ์„œ๋ฒ„๋Š” MSA ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ, ๋ฉค๋ฒ„ ๋ชจ๋“ˆ์—์„œ FCM ์•Œ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ, ๋ฉค๋ฒ„ ๋ชจ๋“ˆ์˜ resources์— ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. 2. ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์— firebase ์˜์กด์„ฑ ์ถ”๊ฐ€build.gradle์— ํ•ด๋‹น ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹คdependencies { implementation 'com.google.firebase:firebase-admin:9... 2024. 9. 22.
Beyond SW ์บ ํ”„ 17์ฃผ์ฐจ ํšŒ๊ณ  ์ด๋ฒˆ ์ฃผ๋ง์—๋Š” ์˜ค๋žœ๋งŒ์— ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…์„ ํ–ˆ์Šต๋‹ˆ๋‹ค!https://onfonf.tistory.com/85 [Spring / Redis] ์ด์ค‘ํ™” ์„œ๋ฒ„์—์„œ์˜ ์›น ์†Œ์ผ“ ์ฑ„ํŒ… + SSE ์•Œ๋ฆผ ๊ตฌํ˜„๊ธฐ์žŠ๊ธฐ ์ „์— ๊ธฐ๋กํ•˜์ž, Redis Pub/Sub์„ ํ™œ์šฉํ•œ STOMP ์ฑ„ํŒ… + SSE ์•Œ๋ฆผ ์•ฝ ํ•œ๋‹ฌ๊ฐ„์˜ ์‚ฌ์ด๋””(Si-D) ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.   ์‚ฌ์ด๋”” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” STOMP๋ฅผ ํ™œ์šฉํ•œ 1๋Œ€1 ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ฑ„ํŒ…์ด ์˜คonfonf.tistory.com  ์ด๋ฒˆ์ฃผ๋Š” PMI๋ผ๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ ํšŒ๊ณ ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 2024. 9. 9.
[Spring / Redis] ์ด์ค‘ํ™” ์„œ๋ฒ„์—์„œ์˜ ์›น ์†Œ์ผ“ ์ฑ„ํŒ… + SSE ์•Œ๋ฆผ ๊ตฌํ˜„๊ธฐ ์žŠ๊ธฐ ์ „์— ๊ธฐ๋กํ•˜์ž, Redis Pub/Sub์„ ํ™œ์šฉํ•œ STOMP ์ฑ„ํŒ… + SSE ์•Œ๋ฆผ ์•ฝ ํ•œ๋‹ฌ๊ฐ„์˜ ์‚ฌ์ด๋””(Si-D) ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.   ์‚ฌ์ด๋”” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” STOMP๋ฅผ ํ™œ์šฉํ•œ 1๋Œ€1 ์ฑ„ํŒ… ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ฑ„ํŒ…์ด ์˜ค๋ฉด Server Sent Event ๊ธฐ๋Šฅ์œผ๋กœ ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ์ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.์˜ค๋Š˜์€ ๊ทธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ตฌํ˜„ํ•˜๋ฉฐ ๋ ˆ๋””์Šค์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.  ์ด์ค‘ํ™” ์„œ๋ฒ„์—์„œ์˜ ์›น ์†Œ์ผ“ ํ†ต์‹ ๊ณผ SSE ์•Œ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•  ์ผ๋‹จ ๋ƒ…๋‹ค ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์ง„์„ ๋ณด์—ฌ๋“œ๋ฆฐ ์ด์œ ๋Š”...์‚ฌ์ด๋””์˜ ์šด์˜ ์„œ๋ฒ„๋Š”  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ํŒŒ๋“œ๋ฅผ 2๊ฐœ ๋„์›Œ์„œ ๋‘ ๋Œ€์˜ ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ตฌ์กฐ๋กœ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Web Socket๊ณผ SSE ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ด.. 2024. 9. 7.