DevOps/โ๏ธ CI&CD
๋ค๋ฅธ ์๋ฒ์ ๋ฐฐํฌํ๊ธฐ - ๊ตฌ์กฐ๋ ์ด์ ์๋ ๋ก์ปฌ์์ Tomcat ์๋ฒ์ hello-world.war ํ์ผ์ ๋ฐฐํฌํ๋ค. ์ด๋ฒ์๋ ๋ค๋ฅธ ์๋ฒ์ ๊ฒฐ๊ณผ๋ฌผ ํ์ผ์ ๋ณต์ฌํด์ ๋ฐฐํฌํด๋ณผ ๊ฒ์ด๋ค. ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค. ๋ค๋ฅธ ์๋ฒ(์๋ฒ2)๋ก VM์ ์ฌ์ฉํ๊ฑฐ๋ Docker์ ๊ฐ์ ์๋ฒ๋ฅผ ์ค์นํ๋ค. ๐ ๋๋ ๋์ปค์ ssh ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ด๋ฏธ์ง ์ฌ์ฉํด์ ๋์ปค ์ปจํ
์ด๋ ํํ๋ก ๊ธฐ๋ํ ์์ ! ์๋ฒ2์ ๋์ปค ์์ง์ ์ค์นํ๋ค. (๋์ปค ์์ ๋์ปค๊ฐ ์๋ ํํ = Docker in Docker) ๋์ปค ์ปจํ
์ด๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ด๋ฏธ์ง ์์ฑ โ Dockerfile + *.warํ์ผ๋ก ์ด๋ฏธ์ง ์์ฑ ์ด๋ฏธ์ง๋ Tomcat ์๋ฒ์ warํ์ผ์ ํฌํจ ์ด๋ฏธ์ง๋ก ์ปจํ
์ด๋ ์คํ์ํด. ssh ์๋ฒ์ ์ ์ํด์ docker๋ฅผ ์คํ์์ผ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. โจ Je..
DevOps/โ๏ธ CI&CD
Git, Maven ์ค์ ๋ฐ ํ๋ก์ ํธ ์์ฑ Jenkins ๊ด๋ฆฌ ํญ โ Plugins์ ๋ค์ด๊ฐ์ Github๊ณผ Maven plugin์ ์ค์นํ๋ค. Gradle๋ก ์งํ ์์๋ plugin์ ์ค์นํ๊ณ ์์
ํ๋ก์ ํธ๋ฅผ Freestyle project๋ก ์ ํํ๋ฉด ๋๋ค. ์๋ก์ด item(project)๋ฅผ ๋ง๋ค๊ณ ์์ค์ฝ๋๋ฅผ ๊ฐ์ ธ์ฌ github ๋งํฌ๋ฅผ ๊ธฐ์
ํ๋ค. Maven๊ณผ ๊ด๋ จ๋ ์ค์ ํ์ผ์ธ pom.xml์ ๊ธฐ๋ฐ์ผ๋ก buildํ ์ ์๋๋ก ํ๊ณ build ์ต์
์ clean, compile, package๋ก ์ง์ ํ๋ค. clean : ๊ธฐ์กด์ buildํ ๊ฒ์ด ์๋ค๋ฉด ์ง์ด๋ค. compile : ์ปดํ์ผํ๋ค. package : pom.xml์ ๋ฑ๋ก๋ package ํ์(jar or war)์ ๋ฐ๋ผ ํจํค์งํ๋ค. build๋ฅผ ์ฑ..
DevOps/โ๏ธ CI&CD
CI/CD๋ ๊ฐ๋ฐ ๊ฒฐ๊ณผ๋ฌผ์ ๋ํด ์ง์์ ์ธ ํตํฉ๊ณผ ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ํ๋ ํ๋ก์ธ์ค์ด๋ฉฐ ํตํฉ, ๋น๋, ํ
์คํธ, ๋ฐฐํฌ ์ ๊ณผ์ ์ ๋ํ ์๋ํ๋ฅผ ๊ฑฐ์น๋ค. CI์์๋ ์ปดํ์ผ, ํ
์คํธ, ํจํค์ง ์์
์ด ํฌํจ๋๊ณ CD๋ CI์ ์ํด ํจํค์ง๋ ๊ฒ์ ๋ฐฐํฌํ๋ ์์
์ ํ๊ฒ ๋๋ค. ํนํ ๋ถ์ฐ๋ ์๋ฒ์์ ์คํ๋๋ MSA ํ๊ฒฝ์์์ ์๋ํ ๋ฐฐํฌ๋ ๋ณด๋ค ํจ์จ์ ์ธ ์์
์ ํ ์ ์๊ฒ ํด์ค๋ค. CI/CD WorkFlow ๊ฐ๋ฐ์๊ฐ git commit์ ํ๋ค. CI/CD ๋๊ตฌ(Jenkins)๊ฐ SCM(git)์ ์ ์ฅ๋ ์ฝ๋๋ฅผ ๋ถ๋ฌ์จ๋ค. CI/CD ๋๊ตฌ๊ฐ ์์ค์ฝ๋์ build, test, package๋ฅผ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์คํจ ์ fail, ์ฑ๊ณต ์ pass ์๋ฒ์ ๋ฐฐํฌํ๋ค. ์์ผ๋ก ์์ ๊ฐ์ ๊ณผ์ ์ ์คํํด ๋ณผ ๊ฒ์ด๋ค ! Jenkins..
Spring/Spring WebFlux
Spring WebFlux๋ Reactive Stream API๋ฅผ ์ฌ์ฉํ์ฌ non-blocking, asynchronous๋ฅผ ์ง์ํ๋ ๋น๋๊ธฐ ์คํ๋ง ์น ํ๋ ์์ํฌ์ด๋ค. ์ด๋ ๋๋์ ์น ํธ๋ํฝ (I/O๊ฐ ๋ง์ ์น ์๋น์ค ๋ก์ง)์์ MVC์ ๋๋นํ์ฌ ํจ์จ์ ์ด๊ณ ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ฉ๋๊ณ ์๋ค. ๋งค๋ฒ WebFlux์ ์ฑ๋ฅ์ด ์ข๋ค๊ณ ๋ ํ ์ ์์!๋๋ณด๊ธฐ๐ ๊ทธ๋ฌ๋ฉด ์ฃผ๋ก ์ด๋์์ ํ์ฉ๋๋...?๋ง์ดํฌ๋ก์๋น์ค์์ ๋ค์ํ ๋์ ์์ฒญ์ ์ํํ๋ gateway server์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ํ ์น์์ผ๋๋์ I/O๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์๊ฐ ์ฑํ
์๋น์ค Spring MVC vs Spring WebFluxSpring ๊ณต์ ํ์ด์ง์ ๋์์๋ ํ๋ฅผ ํตํด ๋์ ์ฐจ์ด์ ์ ์ ์ ์๋ค.WebFlux๋ ๋น๋๊ธฐ/๋
ผ๋ธ๋กํน์ด..
Spring/Spring Cloud
Apache Kafka ๋ฐ์ดํฐ ๋๊ธฐํ Orders โ Catalogs Order Service์ ์์ฒญ๋ ์ฃผ๋ฌธ ์๋ ์ ๋ณด๋ฅผ Catalog Service์ ๋ฐ์ Order Service์์ Kafka Topic์ผ๋ก ๋ฉ์์ง ์ ์ก โ Producer Catalog Service์์ Kafka Topic์ ์ ์ก๋ ๋ฉ์์ง ์ทจ๋ โ Consumer Order-Service์ Catalog-Service์ Kafka ๊ธฐ๋ฅ ๊ตฌํ ์ถ๊ฐ ZooKeeperServer์ KafkaServer ๊ธฐ๋ + Eureka Server (discovery-service) ์คํ config-service, apigateway-service, order-service, catalog-service ์คํ ์๋ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์๋ฃ Multip..
CS/๐๏ธ Data
ํธ๋์ญ์
์ด๋ ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋๋ ์์
๋ค์ ๋
ผ๋ฆฌ์ ์ธ ์์
๋จ์๋ก ๋ฌถ์ด ์์ ํ๊ฒ ์คํํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด๋ค. ๐น ACID ์ฑ์ง ์์์ฑ : ํธ๋์ญ์
๊ณผ ๊ด๋ จ๋ ์์
๋ค์ด ๋ถ๋ถ์ ์ผ๋ก ์คํ๋๋ค๊ฐ ์ค๋จ๋์ง ์๋ ๊ฒ ๋ณด์ฅ MVCC โ Undo Log ํตํด์ ํธ๋์ญ์
์คํจ ์ rollback ์ผ๊ด์ฑ : ํธ๋์ญ์
์ด ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ์ธ์ ๋ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ์ ์ง ๐ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ ์ ์ฝ ์กฐ๊ฑด ํตํด์ ์ผ๊ด์ฑ ๋ณด์ฅ โ ex) ์ ๋ํฌ ์ ์ฝ, ์ธ๋ํค ์ ์ฝ ๋ฑ ๋
๋ฆฝ์ฑ : ํธ๋์ญ์
์ ์ํ ์ ๋ค๋ฅธ ํธ๋์ญ์
์ ์ฐ์ฐ ์์
์ด ๋ผ์ด๋ค์ง ๋ชปํ๋๋ก ๋ณด์ฅ ๐ ์ฑ๋ฅ ๊ด๋ จ ์ด์ ๋ก ์ธํด ๊ฐ์ฅ ์ ์ฐ์ฑ ์๋ ์ ์ฝ ์กฐ๊ฑด ํธ๋์ญ์
๊ฒฉ๋ฆฌ๋ ๋ฒจ ํตํด์ ๋ณด์ฅ ์ง์์ฑ : ์ฑ๊ณต์ ์ผ๋ก ์ํ๋ ํธ๋์ญ์
์ ์์ํ ๋ฐ์๋์ด์ผ..
CS/๐๏ธ Data
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ ํต์ฌ์ ๋์คํฌ์ ๋๋ค I/O(์ ๊ทผ)์ ์ต์ํ์ํค๋ ๊ฒ์ด๋ค. ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด ์กฐํ๋ฅผ ์ต์ ํ์ํฌ ์ ์๋ค. ์ธ๋ฑ์ค ์ธ๋ฑ์ค๋ ์ ๋ ฌ๋ ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฅผ ํตํด ํ์๋ฒ์๋ฅผ ์ต์ํํ ์ ์๋ค. ์ธ๋ฑ์ค๋ ํ
์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๊ฐ ๋ ์์ค๋ฉด ์ธ๋ฑ์ค๋ฅผ ์กฐํํ ํ ์ฐพ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์๋ณธ๋ฐ์ดํฐ๋ก ๋์๊ฐ ์ป๊ฒ ๋๋ค. ์ธ๋ฑ์ค ์๋ฃ๊ตฌ์กฐ HashMap ๋จ๊ฑด ๊ฒ์ ์๋ โ O(1) ๋ฒ์ ํ์ โ O(N) like 'AB%' ์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ฌ์ฉํ ๋ ํค๋ฅผ ํ๋ํ๋ ๊บผ๋ด์ ๋น๊ตํด์ผํจ List ์ ๋ ฌ๋์ง ์์ ๋ฆฌ์คํธ ํ์ โ O(N) ์ ๋ ฌ๋ ๋ฆฌ์คํธ ํ์ โ O(logN) ์ ๋ ฌ๋์ง ์์ ๋ฆฌ์คํธ์ ์ ๋ ฌ ์๊ฐ ๋ณต์ก๋ โ O(N) ~ O(N*logN) ์ฝ์
๋ฐ ์ญ์ ๋น์ฉ ๋งค์ฐ ๋์ Tree ํธ๋ฆฌ ๋์ด์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋๊ฐ ๊ฒฐ์ ..
์๊ณ ๋ฆฌ์ฆ/๐๏ธ ์ ๋ฆฌ
LIS(Longest Increasing Subsequence)๋ ์์๊ฐ n๊ฐ์ธ ๋ฐฐ์ด์์ ์ผ๋ถ ์์๋ฅผ ๊ณจ๋ผ๋ด์ด ๋ง๋ ๋ถ๋ถ ์์ด ์ค์์ ๋ชจ๋ ์์๋ค์ด ์ด์ ์์๋ณด๋ค ํฌ๋ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ๊ณ ๊ทธ ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ ์์ด์ด๋ค. ์์๋ฅผ ๋ค์ด๋ณด์. A = {10, 20, 10, 30, 20, 50}์ธ ์์ด์์ ์์๊ฐ ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ {10, 20}, {20, 30, 50}, {10, 30, 50} ๋ฑ์ด ์๋๋ฐ, ๊ทธ ์ค ๊ธธ์ด๊ฐ ์ต๋์ธ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๊ฐ 4์ธ {10, 20, 30, 50}์ด๋ค. ๋ํ ๋ฌธ์ ๋ ์๋์ ๊ฐ๋ค. https://www.acmicpc.net/problem/11053 11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค..