๋ชฉ๋ก์ ์ฒด ๊ธ (124)
DevLog ๐ถ
๐ฑ InnoDB ์คํ ๋ฆฌ์ง ์์ง ์ํคํ ์ฒMySQL์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์คํ ๋ฆฌ์ง ์์ง์ธ 'InnoDB'์ ๋ํ ์ํคํ ์ฒ๋ฅผ ์์๋ณด์.๊ทธ๋ฆผ์ด ๋ณต์กํ๊ธฐ๋ ํ์ง๋ง, ์ผ์ชฝ์ ์ด์ ์ ๋ดค๋ MySQL ์์ง์ด๊ณ , ์ค๋ฅธ์ชฝ์ด InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๊ตฌ์ฑ๋์ด๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ innoDB ์คํ ๋ฆฌ์ง ์์ง์ ํน์ง์ ๋ํด์ ์์๋ณด๋๋ก ํ์. 1. PK์ ์ํ ํด๋ฌ์คํฐ๋ง๊ธฐ๋ณธ์ ์ผ๋ก InnoDB์ ๋ชจ๋ ํ ์ด๋ธ์ PK๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐ๋ง๋์ด ์ ์ฅ๋๋ค. ์ฌ๊ธฐ์ ํด๋ฌ์คํฐ๋ง๋๋ค๋ ๊ฒ์, PK ๊ฐ์ด ๋น์ทํ ๋ ์ฝ๋๋ผ๋ฆฌ ๋ฌถ์ด์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธํ๋ค. PK ๊ฐ์ด ๋ ์ฝ๋์ ์ ์ฅ ์์น๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ ์คํ๊ฒ ๊ฒฐ์ ํด์ผ ํ๋ค. ์ผ๋ฐ์ ์ธ DBMS์์ ์ธ์ปจ๋๋ฆฌ ์ธ๋ฑ์ค์ ๋ฆฌํ ๋ ธ๋์๋ ๋ฐ์ดํฐ์ ์ค์ง์ ์ธ ๋ฌผ๋ฆฌ ์ฃผ์๊ฐ ๋ค์ด๊ฐ์, ํด๋น ์ธ๋ฑ์ค์ ๋ฐ์ด..
๐ฑ MySQL ์ ์ฒด ๊ตฌ์กฐMySQL ์๋ฒ๋ ํฌ๊ฒ MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ผ๋ก ๋๋ ์ ์๋ค. MySQL ์์ง์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ ์ํ๊ณ , ์ฟผ๋ฆฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปค๋ฅ์ ํธ๋ค๋ฌ์ SQL ํ์, ์ต์ง๋ง์ด์ ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฟผ๋ฆฌ ๊ด๋ จ ์ฒ๋ฆฌ๋ ์ด๊ณณ์์ ํ๊ธฐ ๋๋ฌธ์, ๊ฑฐ์ '๋๋'์ ๊ฐ์ ์ญํ ์ ํ๋ฉด ๋๋ค๊ณ ์๊ฐํ์. ์คํ ๋ฆฌ์ง ์์ง์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋์คํฌ์ ์ ์ฅํ๊ฑฐ๋, ํน์ ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์์ ์ ํ๋ฉฐ ํ๋์ MySQL ์๋ฒ๋ ์ฌ๋ฌ ๊ฐ์ ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ ์ ์๋ค. MySQL ์์ง๊ณผ ์คํ ๋ฆฌ์ง ์์ง์ ์๋ก 'ํธ๋ค๋ฌ API'๋ผ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์ด๋ ์ ๋์ ๋ฐ์ดํฐ ์์ ์ด ์ผ์ด๋ฌ๋์ง ํ์ธํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค. show global s..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ์ฅ๋ฐ๊ตฌ๋ ๋ฏธ์ ์์๋ ํ๋ก ํธ ํฌ๋ฃจ๋ค๊ณผ ํ์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ผ๋ก ์๋ฌ ๋ก๊ทธ๋ฅผ ๋ณผ ์ผ์ด ๋ง์์ง ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด์ ์คํ๋ง์ด ๋์์ง ๋์ ๋ก๊ทธ๋ ๋ณผ ์ ์์์ง๋ง, ์๋ฌ์ ๋ํ ๋ก๊ทธ๋ง ๋น ๋ฅด๊ฒ ํ์ธํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ด๋ฒ ๋ฏธ์ ์ ๋๋ฆ์ ์ฝ์ง์ ๊ณ๋ค์ฌ๊ฐ๋ฉฐ ์ ์ฉํด๋ณด์๋ค ๐ ๐ฑ ๋ฌธ์ ์ํฉ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉฐ ์๋์ ๋ฌธ์ฅ์ด ๋๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ๋ค. nohup sudo java -jar $JAR_NAME >> $REPOSITORY/deploy.log 2> $REPOSITORY/deploy-err.log & nohup : ํฐ๋ฏธ๋์ ์ข ๋ฃํด๋ ๊ณ์ ์คํํ๊ธฐ. java -jar $JAR_NAME : jar ํ์ผ ์คํํ๊ธฐ. >> : ์ถ๋ ฅ ๋ฆฌ๋ค์ด๋ ์ . jar์ ์คํ ๊ฒฐ๊ณผ๋ฅผ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ง๋ ํฌ์คํ ์ ์ ํจ์ค๋ฅผ ์ค์นํ๊ณ ํ์ํ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ๊ณผ์ ๊น์ง ์งํํ์๋ค. ๐ฑ ๋ ํ์งํ ๋ฆฌ WebHook ๋ฑ๋กํ๊ธฐ ์ฐ๋ฆฌ๋ ๊นํ๋ธ ๋ ํ์งํ ๋ฆฌ์ ํน์ ๋ธ๋์น์ push ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ๋ฐฐํฌ๊ฐ ์ผ์ด๋๊ฒ ๋ง๋ค ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ํด๋น push ์ด๋ฒคํธ์ ๋ํด์ ๊ฐ์งํ ์ ์๋๋ก 'webhook'์ด๋ผ๋ ์น๊ตฌ๋ฅผ ๋ฑ๋กํด์ผ ํ๋ค. ๋ฑ๋กํ๊ณ ์ถ์ ๋ ํ์งํ ๋ฆฌ์ Settings > Webhooks > Add webhook์ ํด๋ฆญํ๋ค. ์ด๋ฐ ์์ผ๋ก payload URL๊ณผ content-type์ ์ง์ ํด์ค๋ค. aws ์ธ์คํด์ค๋ก ๋์ ๋ค๋ฉด publicIP:8081๊ณผ ๊ฐ์ ํํ๊ฐ ์ URL์ ๋ค์ด๊ฐ ๊ฒ์ด๋ค. โญ๏ธ ์ฌ๊ธฐ์ ์ ์ผ ์ค์ํ ๊ฑฐ, ๋์ ๊ผญ /github-webhook/ ๋ถ์ฌ์ค์ผ ํ๋ค... ์ด๊ฑฐ ๋๋ฌธ์..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ด๋ฒ ๋ฏธ์ ์์ ์ ํจ์ค๋ฅผ ํตํด CI / CD๋ฅผ ๊ตฌ์ถํด๋ณด๊ณ ์ถ์ด์ โญ๏ธ๋ฒ ๋ฒ ์ ์๋โญ๏ธ์ ํ์ ๋น๋ ค์ ํ ๋ฒ ์งํํด๋ณด์๋ค. ๋๋ t4g.micro๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ ๋จ์ด 1๊ธฐ๊ฐ๋ฐ์ ์ ๋์ด์ swap์ ํด์ฃผ์์ด์ผ ํ๋๋ฐ, โญ๏ธ ์ค์ํ ๊ฑด swap ์ 1~1.5๊ธฐ๊ฐ ์ ๋๋ง ํด์ผ ํ๋ค๋ ๊ฒ์ด์๋ค. ๋๋ 2๊ธฐ๊ฐ๋ก ํด์ ์ง๊ธ Use๊ฐ 95%๋ก ๊ฐ๋น๊ฐ๋นํ๋ค. ์๋ ์ ๋ผ์ ๋ก์ปฌ๋ก ์คํํ๊ณ ๋๋ฆฌ์น๋ค๊ฐ ๋ค์ ์๋ํ๋๋ฐ ๋๊ธฐ๋ ํ๋ค... 1.5๊ธฐ๊ฐ๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์คํํด์ฃผ๋ฉด ๋๋ค. # ๊ธฐ์กด์ ์กด์ฌํ๋ /swapfile์ ๋นํ์ฑํํ๊ธฐ sudo swapoff /swapfile # ํฌ๊ธฐ๊ฐ 1.5๊ธฐ๊ฐ์ธ /swapfile ์์ฑํ๊ธฐ sudo fallocate -l 1.5G /swapfile # /swapfi..
๐ฑ ๋ฌธ์ ์ํฉ ์ฌ์ฉ์์ ์์ฒญ์ผ๋ก๋ถํฐ ๋ฐ์์ฅ๋ฐ๊ตฌ๋ ์์ด๋์ ์ฌ์ฉ์์ ์์ด๋๊ฐ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ ๊ฑฐํ๊ธฐ ์ํด ์๋์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค. DELETE FROM cart_item AS c WHERE c.id IN ( SELECT ci.id FROM cart_item AS ci JOIN member AS m ON ci.member_id = m.id AND ci.id IN (6, 8) AND m.id = 1 ); ํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ด target table (cart_item)์ c์ ๋ํด์ ์ ๋ฐ์ดํธ๋ฅผ ํ ์ ์๋ค๋ ๋ฌธ๊ตฌ๊ฐ ๋์๋ค. ๐ฑ ์์ธ MySQL์์๋ update, delete ์์ ์๊ธฐ ์์ ์ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ค๋ฅ์๋ค. (์ฐธ๊ณ ๋ก H2 ํ๊ฒฝ์์๋ ์ ๋์๊ฐ๋ค. ์๋ ..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ๋ฌด๊ณผ๊ธ์ผ๋ก HTTPS ์ ์ฉ ํ๋ก์ ํธ๋ฅผ ์งํํด๋ณด์๋ค. ์ ์๋๋ก๋ผ๋ฉด ๊ฐ๋น์ + Route53 + ACM or ๊ฐ๋น์ + nginx๋ก๋ง ์งํํ๋ฉด ์ข์๊ฒ ์ง๋ง... ์ฌ๋ฌ ์ ์ฝ์ฌํญ์ผ๋ก ์ธํด์ ์๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋๋ฉ์ธ ์ฐ๊ฒฐ ๋ฐ HTTPS ์ ์ฉ์ ์งํํด๋ณด์๋ค. ๐ก ์ ์ฝ์ฌํญ - ๋ฌด๋ฃ ๋๋ฉ์ธ ์ฌ์ฉํ๊ธฐ - ์๋ฒ 1๋๋ก ๊ตฌ์ถํ๊ธฐ (๋์์์ด ๊ณ ํต๋ฐ๋ t4g.micro) - http ์ ์ ์ https๋ก ๋ฆฌ๋ค์ด๋ ํธ์ํค๊ธฐ ๋์ค์ Route53 + ACM + ELB๋ฅผ ํตํด ๋์ ํ๋ ๊ฒ๋ ํฌ์คํ ์ผ๋ก ์์ฑํด๋ณด๊ณ ์ ํ๋ค. (์ด๋ฒ ๋ฏธ์ ์์๋ ๋ชป ํ์ง๋ง ใ ) ๐ฑ ๋๋ฉ์ธ ๊ตฌ์ ํ๊ธฐ ์ฌ์ค ๊ฐ๋น์์์ ๊ตฌ๋งคํ๋ ๋๋ฉ์ธ์ด ์๊ธด ํ์ง๋ง, ํ์ด ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ ๋๋ง์ ๋๋ฉ์ธ์ ์ฌ์ฉํ๊ธฐ๋ ์ข ๊ทธ๋์ ๋ค๋ฅธ ์ฌ์ดํธ๋ฅผ ์ฐพ์๋ณด์๋ค. ๊ทธ๋ฌ๋ค๊ฐ ..
๐ฑ CDS (Content Delivery Service) ๋ง์ฝ, ๋ด๊ฐ ๋ฐฐํฌํ ์๋ฒ๊ฐ ํ๊ตญ์๋ง ์กด์ฌํ์ง๋ง ์ ์ธ๊ณ ๋ค์ํ ๊ณณ์์ ์ก์ธ์ค๋๊ณ ์๋ค๊ณ ์๊ฐํด๋ณด์. ์๋ง์ ํ์ผ๊ณผ ๋ฐ์ดํฐ์ ๋ํด ์ ์ธ๊ณ์ ์๋ตํด์ผ ํ๋ ์ํฉ์์, ๋ฉ๋ฆฌ ์๋ ๊ตญ๊ฐ์ ์ฌ์ฉ์์ ๋ํด์ ์ ๋ฌํด์ผ ํ๋ค๋ฉด? ํ๊ตญ ์ฌ์ฉ์์๊ฒ๋ ๋น ๋ฅด๊ฒ ์ ๋ฌํ ์ ์์ง๋ง, ๋ฉ๋ฆฌ ์๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์์ ํ๊ตญ์์ ์ฒ๋ฆฌํ๊ณ , ๋ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๊ณณ๊ณณ์ ์กด์ฌํ๋ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ ์ ๋ ์ง์ฐ์ด ๋ฐ์ํ ์๋ฐ์ ์๋ค. ์ด๋ฌํ ์ํฉ์์ ๋ค์์ ์บ์ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์ง์ญ์ ๋ฐฐ์นํ์ฌ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค! ๊ทธ๋ ๋ค๋ฉด ์บ์ ์๋ฒ๋ ์ด๋์ ๋ฌ์ผ ํ ๊น? 1. ์น ์๋ฒ ์ง์ ์ ๋๊ธฐ ์น ์๋ฒ ์ง์ ์ ๋๊ฒ ๋๋ฉด ์๋ฒ ์์ฒด์ ๋ถํ๋ ์ค์ด๋ค๊ฒ ๋์ง๋ง, ์ธํฐ..
๊ฐ๋น์ ์งํํ ๋ ๋ฒจ 2 ์ธ ๋ฒ์งธ ํ์ด ํ๋ก๊ทธ๋๋ฐ ๋ฏธ์ ์ธ ์งํ์ฒ ๋ฏธ์ ์ด๋ค...! ์ฐํ ์ฝ ํ๋ฉด์ ์งํํ๋ ๋ฏธ์ ์ค์์ ๊ฐ์ฅ ์ด๋ ค์ด ๋ฏธ์ ์ด ์๋์๋ ์ถ๋ค. ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๋จ์ ๊ตฌํ ๊ทธ ์ฌ์ด์์ ์์ฒญ ํค๋งธ๋ ๊ฒ ๊ฐ๋ค... ์์ผ๋ก ๊ฐ๋ฐํ ๋๋ ๋ ๋ฒจ 1์์ ๋ฐฐ์ ๋ ๊ฒ๋ค์ ์ ๋ง ์์ง ์์์ผ๊ฒ ๋ค ๐ฅฒ โ๏ธ ์์ฑํ ์ฝ๋ GitHub - Cl8D/jwp-subway-path: ๋ ๋ฒจ 2 ์งํ์ฒ ๋ฏธ์ ๋ ํ์งํ ๋ฆฌ ๋ ๋ฒจ 2 ์งํ์ฒ ๋ฏธ์ ๋ ํ์งํ ๋ฆฌ. Contribute to Cl8D/jwp-subway-path development by creating an account on GitHub. github.com โ๏ธ 1์ฐจ PR [1๋จ๊ณ - ์งํ์ฒ ์ ๋ณด ๊ด๋ฆฌ ๊ธฐ๋ฅ] ์ ธ๋(์ด์ง์) ๋ฏธ์ ์ ์ถํฉ๋๋ค. by Cl8D ·..
๐ฑ ๋ค์ด๊ฐ๊ธฐ ์ ์ฌ์ค rest-docs๋ ๋ฏธ์ ์๊ตฌ์ฌํญ์ ์๋์์ง๋ง, ๊ฐ์ธ์ ์ธ ์์ฌ์ผ๋ก ํ ๋ฒ ์ง์ ๊ตฌ์ถํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์์ด์ ๋ฏธ์ ํ๋ ๊น์ ํจ๊ป ์งํํ๊ฒ ๋์๋ค. (์ด์ฐจํผ ์ถํ ๋ฏธ์ ์งํํ๋ฉด์ ํ๋ก ํธ ํฌ๋ฃจ์ ํ์ ํ๊ฒ ๋๋ฉด ์ธํ ํด์ผ ํ๋๊น...) RestDocs๋ฅผ ์ฐ๋ํ ๋ ์ธ์ ํ ์คํธ ๋ ๋ฒจ์์ ์งํํ ์ง (RestAssured) ์๋๋ฉด ์ปจํธ๋กค๋ฌ์ ๋จ์ ํ ์คํธ์์ ์งํํ ์ง ๊ณ ๋ฏผํ์๋๋ฐ, RestAssured๋ฅผ ํตํด ์ฌ์ฉํ๊ฒ ๋๋ฉด BDD ์คํ์ผ์ด๋ผ ๋ ์ง๊ด์ ์ผ ๊ฒ ๊ฐ๊ธด ํ์ง๋ง ์๋ฌด๋๋ ์๋๊ฐ ๋๋ฆฌ๋ค ๋ณด๋๊น ๊ทธ๋ฅ ์ปจํธ๋กค๋ฌ ๋ ์ด์ด์์ ์งํํ๋ค. (์ค์ ๋ก๋ ์ปจํธ๋กค๋ฌ ๋ ๋ฒจ์์ ๋ง์ด ์งํํ๋ ๊ฒ ๊ฐ๋ค.) โ๏ธ Rest-docs๊ฐ ์ด๋ค ๊ฑฐ์ง? Spring Rest Docs๋ Restful ์๋น์ค์ ๋ํด ์ ํํ๊ณ ..