๋ฌธ์ [๋ฐฑ์ค 1260๋ฒ] ๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข
๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค. ์
๋ ฅ ์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋..
์ ์ฒด ๊ธ
๊ฐ๋ฐ ์ง์์ ์๊ณ ๊บผ๋ด ์ฐ๋ ๋ธ๋ก๊ทธ์ ๋๋ค.์ด์ ํฌ์คํ
์์ Webclient๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค๋ค๊ฐ์ ํต์ ์ ๊ตฌ์ถํ๋ค. ์ด๋ฒ์๋ Kafka๋ฅผ ํตํด์ ๋ฉ์ธ์ง ํ๋ฅผ ๊ธฐ์ฉํ์ฌ ์๋น์ค๋ค ๊ฐ์ ํต์ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด๋ ค๊ณ ํ๋ค. kafka์ ๋ํ ์์ ํฌ์คํ
์ ์ฐธ๊ณ ํด์ ๊ตฌ์ถํ๋ค. ํ์ฌ ๋ด ์๋น์ค๋ app-service ์ user-service๊ฐ ์๋๋ฐ, app-service๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์์ ์ ์ฑ์ ์๋ฒ์ ๋ฑ๋กํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋์๋ค. ํ์๋ ์ง๊ธ ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ฑ๋กํ ๋, User ์ํฐํฐ์ ์๋ appCount๋ฅผ +1ํด์ฃผ๋ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋ค. 0. Depdency ๋ค์๊ณผ ๊ฐ์ด ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด kafka๋ฅผ ์ฌ์ฉํ ์ ์๋ค. dependencies { implementation 'org.springframework.kafka:spring-..
Spring Cloud์ ๋ํ ์ค์ ์ ์ด๋์ ๋ ๋ง์ณค๋ค. ์ด์ ๊ฐ ์๋น์ค๋ค ๊ฐ์ ํต์ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด๋ ค๊ณ ํ๋ค. 0. WebClient Spring Boot์์๋ ์ฌ๋ฌ HTTP ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ๋ด๊ฐ ์๋ ์ ๋ง์ด ๋ดค๋ ํด๋์ค๋ RestTemplate์ด์๋ค. Spring Doc์์๋ WebClient๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ๊ณ ํ๊ณ ์๊ณ , RestTemplate๋ณด๋ค ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ WebClient๋ก ์งํํด๋ณด๋ ค๊ณ ํ๋ค. 1. ๋๊ธฐ vs ๋น๋๊ธฐ / Blocking vs Non-Blocking ๋จผ์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ฅผ ๊ตฌ๋ถํด๋ณด์. - ๋๊ธฐ(Synchronous) : ์์ฒญ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆผ - ๋น๋๊ธฐ(Asynchronous) : ์์ฒญ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ ๊ทธ๋ ๋ค๋ฉด,..
์ ๋ฒ ํฌ์คํ
์์ ์์๋ก Public Repository๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค์ํ ํ์ผ์ด ๋ค์ด์๋ ๋ ํฌ์งํ ๋ฆฌ๋ ๋น์ฐํ private์ผ๋ก ์ค์ ๋์ด ์์ ๊ฒ์ด๋ค. ๊ทธ๋ผ ์ด๋ฒ ํฌ์คํ
์์ , Config Server์์ private repository๋ก๋ถํฐ ์ค์ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์ธํ
ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค. 1. ๋น๋์นญ ํค ์์ฑ ๋งฅ์์๋ ssh ๋น๋์นญ ํค๋ฅผ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. $ ssh-keygen -m PEM -t rsa -b 4096 -C {๊นํ๋ธ ๊ณ์ } ์ ์ฅํ ์์น์ ๋น๋ฐ๋ฒํธ(passphrase)๋ฅผ ์ค์ ํ๊ณ ๋ง๋ค์ด์ฃผ์. 2. Deploy Key ๋ฑ๋ก ๋ง๋ค์ด ์ฃผ๋ฉด, .pub ์ Public key๋ฅผ ๋ณผ ์ ์๋๋ฐ ์ด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ Private repository์ Deploy Key๋ก ..
0. Spring Cloud Bus ์ง๋ ํฌ์คํ
์์ Actuator๋ฅผ ์ด์ฉํด์ refresh๋ฅผ ํตํด configuration ์ ๋ณด๋ค์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ์ค์ ์ ๋ณด๊ฐ ๋ฐ๋๋ ๋ง๋ค refresh๋ฅผ ํด์ค์ผ ํ๋ ๋จ์ ์ด ์๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ดํด๋ณด์. https://spring.io/projects/spring-cloud-bus/ Spring Cloud Bus Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or o..
๋ฌธ์ ํ๋ก์ ํธ ์ ์ฒด๋ฅผ Spring Cloud๋ฅผ ์ด์ฉํ์ฌ ๊ธฐ๋ณธ ๋ผ๋๋ฅผ MSA๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. public class App extends BaseTimeEntity { //... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id", nullable = false) private User user;} ๊ธฐ์กด์ ์ค๊ณํ๋ App Entity ๋ User Entity์ ์ฐ๊ด๊ด๊ณ ๋งคํ์ผ๋ก ํด๊ฒฐํ๋ ค๊ณ ์ค๊ณํ๋ค. ํ์ง๋ง, ์ง๊ธ ํ๋ก์ ํธ ๊ตฌ์ฑ์ app-service์ user-service๋ฅผ ๋๋์ด ๋์๋ค. ๊ทธ๋์ app-service์์ user๋ฅผ ์ฐธ์กฐํ ์ ์๋ ๊ฒ์ด๋ค. ์ด์ ๊ด๋ จํด์ ๋ช ๊ฐ์ง ๊ธ๋ค์..