[์ด์ ํฌ์คํ
] RDB๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ 2023.11.04 - [BackEnd/Spring] - [Spring] ๋ถ์ฐ ์์คํ
์์ ํจ๊ณผ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ (1) - Transaction Outbox Pattern & Polling Publisher Pattern 2. RabbitMQ๋ฅผ ์ฌ์ฉํ ์ ๋ฌ ๋ฐฉ๋ฒ RabbitMQ๋ ๊ธฐ๋ณธ์ ์ผ๋ก AMQP(Advanced Mssage Queueing Protocol)๋ฅผ ๊ตฌํํ ๋ธ๋ก์ปค๋ค. ์์ ์ ๊ณต๋ถํ๋ Publish/Subscribe ๋ฐฉ์์ ์ง์ํ๋ค. ๋ํ, RabbitMQ๋ ACK(Acknowledgement) ๋ฉ์ปค๋์ฆ์ ๊ฐ๊ณ ์๋ค. Publisher๊ฐ ๋ฉ์ธ์ง๋ฅผ Queue์ ์ ์์ ์ผ๋ก ๋ฐํํ๋ค๋ฉด Producer Confirm์, C..
BackEnd/Spring Boot
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzaPJn%2FbtszI1jRLRL%2FmB7d5RFnUKFuPU0Jrk6VyK%2Fimg.png)
์ต๊ทผ ๋ง์ ๊ธฐ์
๋ค์ด ๋ถ์ฐ ์์คํ
์ผ๋ก ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ์๊ณ , ๋ ๋ํ ๋ถ์ฐ ์์คํ
์ ๊ด์ฌ์ด ๋ง๋ค. ์ด๋ฒ์ ๋ถ์ฐ ์์คํ
์์์, ๊ฐ ์ปดํฌ๋ํธ๋ค ์ฌ์ด์ ์ด๋ป๊ฒ ์ ๋ณด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฌํ๋ ๊ฒ์ด ์ข์์ง ๊ณต๋ถํด๋ณด๊ฒ ๋ค. 0. ๋ถ์ฐ์์คํ
์ด๋? ๋ถ์ฐ ์์คํ
์ ์ฌ๋ฌ ๊ฐ์ ์ปดํจํฐ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ ์ด์์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์์คํ
์ด๋ค. ๊ฐ ์ปดํฌ๋ํธ๋ค์ ํ๋์ ๊ธฐ๋ฅ์ ์ํํ๋ค. ํฌ๊ฒ ์ธ ๊ฐ์ง ์ ํ์ด ์์ ์ ์๋ค. ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์
Enterprise-application ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ณ ์ ํ๋ฆฌ์ผ์ด์
MSA(Micro Service Architecture) ๋ชจ๋๋ฆฌ์ ์ํคํ
์ณ ์ ํ๋ฆฌ์ผ์ด์
+ ๊ฒ์์์ง Monolithic Architecture + Search Engine 1. ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ๋ฒ ๊ทธ๋ ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYLNr%2FbtssUJvIxNo%2F0k9Z6Nv31FutsKbS99fk40%2Fimg.png)
GitHub Action์ ํตํด์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ Docker๋ก ๋ฐฐํฌํ๋๋ฐ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. 1. GitHub์ ์ฌ๋ฆฌ์ง ์๋ ํ์ผ - application.yml ์ ์ฉ ์๋ฒ์ ํ์ํ applicationํ์ผ์ ํ๋ก์ ํธ์ ์ ์ฉํด์ผ ํ๋๋ฐ, raw ํ์ผ์ ๊ทธ๋๋ก github์ ์ฌ๋ ค์ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์์๋ค. ๋ฐ๋ผ์ GitHub Action ์คํฌ๋ฆฝํธ์ ๋ค์์ ์ถ๊ฐํ๋ค. gradle.yml ... - name: Set YML run: | mkdir -p src/main/resources echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > src/main/resources/application.yml find src ... Action Secret์ ๋ฏธ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7xVGe%2FbtssTuTjUcC%2Fp2fZrozAy3D1DH3Zx2pKl1%2Fimg.gif)
*M1 Macํ๊ฒฝ MongoDB ์ค์น $ brew tap mongodb/brew $ brew install mongodb-community MongoDB ์คํ ๋ฐ ์ ์ง ์๋ฒ ์์ $ brew services start mongodb-community ์๋ฒ ์ข
๋ฃ $ brew services stop mongodb-community _์๋ฒ๋ฅผ ์์ํ๋ฉด MongoDB์ ๊ธฐ๋ณธ ํฌํธ์ธ *_27017** ํฌํธ๋ก ์ด๋ฆฐ๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋จ๋ฉด ์๋ฒ ๊ตฌ๋์ ์ฑ๊ณตํ๊ฒ ์ด๋ค. MongoDB ํฐ๋ฏธ๋ ํ์ฉํ๊ธฐ $ mongo mongo์๋ฒ๋ฅผ ๊ตฌ๋ํ๊ณ , ํฐ๋ฏธ๋์์ mongo๋ฅผ ์
๋ ฅํ๋ฉด ํฐ๋ฏธ๋์์ ์๋ฒ์ ์ ์ํ ์ ์๋ค. *zsh: command not found: mongo์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์, $ brew install mong..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb47QUf%2FbtssTqQWkoz%2FgAXHi3OmLUKmtwahH3bJok%2Fimg.png)
Redis๋? Redis๋ ์คํ ์์ค, ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์คํ ์ด์ด๋ฉฐ, ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํ๋ค. ์ฃผ์ ์ฉ๋๋ก๋ ์บ์ฑ, ๋ฉ์์ง, ์ธ์
๊ด๋ฆฌ ๋ฑ์ด ์๋ค. Redis๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์คํฌ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฏ๋ก ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ๋ํ Redis๋ ์์์ฑ์ ์ง์ํ์ฌ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์๋ ์๋ค. Redis๋ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ฉฐ, ํด๋ฌ์คํฐ๋ง ๋ฐ ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๋ณต์ ์ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค. Redis๋ ๋ง์ ์ดํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ, ์๋์ ์ฑ๋ฅ์ด ์ค์ํ ์์คํ
์์ ํนํ ์ ์ฉํ๋ค. Redis์ ์ฅ๋จ์ ์ฅ์ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ก์ธ์ค Redis๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋๋ฐ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrI4Bh%2FbtssVG6yvjK%2FOKsTv9sX3KrFPxjmHhHd91%2Fimg.png)
์์
๋ก๊ทธ์ธ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋น์ทํ์ง๋ง, Apple์ ๊ฒฝ์ฐ ๋ฐฉ์์ด ์กฐ๊ธ ๋ค๋ฅด๋ค. Apple์์๋ identity token์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ค๋น๊ณผ์ 1. Apple Developer ๊ณ์ ๋จผ์ ์ ํ๋ก๊ทธ์ธ์ ๊ตฌํํ๊ธฐ ์ํด์ Apple Developer ๊ณ์ ์ด ํ์ํ๋ค. Apple Developer Program์ ๊ฐ์
ํ๋ ค๋ฉด $99 (์ฝ 129,800์)์ด ํ์ํ๋ค. ํผ์ ์ฐ์ต์ฉ์ผ๋ก๋ ์กฐ๊ธ ๋ถ๋ด๋๋ ๊ฐ๊ฒฉ์ด๋ค. ๐ฅฒ 2. App ID ๋ฐ๊ธ ์ ํ Certificates, Identifiers & Profiles ํญ - Identifiers์์ ํ๋ฌ์ค ๋ฒํผ์ ๋๋ฌ ์ฑID๋ฅผ ๋ง๋ค์ด์ค๋ค. ์ฑ ID๋ฅผ ์ ํํ๊ณ ๋ค์์ ๋๋ฅธ๋ค. App์ ์ ํํ๋ค. Descripttion๊ณผ Bundle ID๋ฅผ ์
๋ ฅํด์ค๋ค. ๋ณดํต Bun..