๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ์ด๋ฉ”์ผ ๋ฐœ์†ก ์„ฑ๋Šฅ ๊ฐœ์„ ํ•˜๊ธฐ (feat. ๋ชจ๋“ˆ ๋ถ„๋ฆฌ)

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ ์ด๋ฉ”์ผ ๋ฐœ์†ก ์„ฑ๋Šฅ ๊ฐœ์„ ํ•˜๊ธฐ (feat. ๋ชจ๋“ˆ ๋ถ„๋ฆฌ)

๊ฐœ์š”ํ˜„์žฌ ์ €ํฌ Subport์—์„œ๋Š” ๊ตฌ๋… ๊ฒฐ์ œ์ผ์ด ๋‹ค๊ฐ€์˜ค๋ฉด ์ด๋ฉ”์ผ๋กœ ์•Œ๋ฆผ์„ ๋ฐœ์†กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ๋ฆผ ์„ค์ •์€ ON/OFF๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฒฐ์ œ 1์ผ ์ „ ๋˜๋Š” 3์ผ ์ „์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ผ ๋ฐœ์†ก ๋กœ์ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ†ตํ•ด ๋งค์ผ ์˜ค์ „ 6์‹œ 30๋ถ„์— ์˜ค๋Š˜์ด ๋ฐœ์†ก์ผ์ธ ๊ตฌ๋… ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜์—ฌ ์ด๋ฉ”์ผ ๋ฐœ์†ก์šฉ ๊ฐ์ฒด ์ƒ์„ฑํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค์ „ 7์‹œ์— ์ด๋ฉ”์ผ ๋ฐœ์†ก@Transactional(readOnly = true)public void send(LocalDateTime now) { List emailNotifications = getEmailNotifications(now, SendingStatus.PENDING); log.info("์ด๋ฉ”์ผ ๋ฐœ์†ก ์‹œ์ž‘ - ๋Œ€์ƒ ๊ฑด์ˆ˜: {}", emailNo..

OCI(Oracle Cloud Infrastructure) ์ ์‘๊ธฐ

OCI(Oracle Cloud Infrastructure) ์ ์‘๊ธฐ

AWS์˜ ํ”„๋ฆฌํ‹ฐ์–ด ์ •์ฑ… ๋ณ€๊ฒฝ์ง€๋‚œ 2025๋…„ 7์›”๋ถ€ํ„ฐ AWS์˜ ํ”„๋ฆฌํ‹ฐ์–ด ์ •์ฑ…์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ์œ ํšจ ๊ธฐ๊ฐ„์ด 12๊ฐœ์›”์—์„œ 6๊ฐœ์›”๋กœ ์ค„์–ด๋“ค๊ณ , ์„œ๋น„์Šค๋ณ„ ๋ฌด๋ฃŒ ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„ ์„ค์ • ๋Œ€์‹  ํฌ๋ ˆ๋”ง ์‚ฌ์šฉ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ธ๋ฐ ์ด์ œ ํ”„๋ฆฌํ‹ฐ์–ด ์ฒดํ—˜์ด ๋ช…์˜๋‹น์œผ๋กœ ์ ์šฉ๋˜์–ด ๋™์ผ ๋ช…์˜๋กœ ์—ฌ๋Ÿฌ ๊ณ„์ •์„ ๋งŒ๋“ค์–ด๋„ ์ด๋ฏธ ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์ฒดํ—˜ํ–ˆ๋‹ค๋ฉด ์ถ”๊ฐ€๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.์ €๋„ ๊ทธ์ „๊นŒ์ง€๋Š” ๊ณ„์ •์„ ๊ณ„์† ๋ฆฌํ•„ํ•˜๋ฉฐ ๋Š๊น€์—†๋Š” AWS ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด์ œ ์ œ ๋ช…์˜๋กœ๋Š” ๋” ์ด์ƒ ํ”„๋ฆฌํ‹ฐ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋Œ€์•ˆ์„ ์ฐพ๋”๋ผ๋„ ์ตœ๋Œ€ 6๊ฐœ์›”, ํ† ํฐ ์†Œ์ง„ ์†๋„์— ๋”ฐ๋ผ ๊ทธ๋ณด๋‹ค ์งง์•„์งˆ ์ˆ˜ ์žˆ์–ด ์„œ๋น„์Šค ์šด์˜์šฉ์œผ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ ์ƒˆ ์นœ๊ตฌ๋ฅผ ์ฐพ์•„ ๋‚˜์„ค ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋งˆ์นจ..