- API Secret Manager
- ์ ํ๋ฆฌ์ผ์ด์ , ์๋น์ค, IT ๋ฆฌ์์ค์ ์ก์ธ์คํ ๋ ํ์ํ ์ ๋ณด๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ์ด์ ๊ฐ์ ์ ๋ณด๋ฅผ ํ๋์ฝ๋ฉ๋ ์ํ๋ก ์ฌ์ฉํ์ง ์๊ฒ ํด์ค๋ค.
- ๋ฆฌ์์ค์ ๋ณด์ ์ ๋ณด ๊ต์ฒด๋ฅผ ์ค์์์ ํ ์ ์๋ค.
- Spring Cloud์ AWS Secret Manager: Spring Cloud๋ bootstrap.yml(or properties)์์ ์ค์ ์ ๋ก๋ํ๊ฒ ๋๋ค. ์คํ๋ง ํด๋ผ์ฐ๋์์ ๋ถํธ์คํธ๋ฉ ์ปจํ ์คํธ๋ฅผ ์คํ๋ง ์ปจํ ์คํธ์ ๋ถ๋ชจ๋ก ๋จผ์ ์์ฑ๋๋ฏ๋ก application.yml์์ ์ค์ ์ ๋ก๋ํ๊ฒ ๋๋ค. ๋ถํธ์คํธ๋ฉ ์ปจํ ์คํธ๋ ์ธ๋ถ ๊ตฌ์ฑ์ ์ฐพ์ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ์๋ ๋ค๋ฅด๊ฒ convention์ ์ ์ฉํ๊ณ , ์ธ๋ถ ๊ตฌ์ฑ์ ๋ถ๋ฆฌํด์ ์ ์งํ๊ธฐ์ ๋ถํธ์คํธ๋ฉ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
spring:
application:
name: app_name
profiles:
active: local
aws:
secretmanager:
name: app_name
endpoint:
secretKey:
category:
key: value.key
๐ฉโ๐ป ๋ชจ๊ฐ์ฝ
- ๋๋ฒ์งธ ๋๋ค ๋ชจ๊ฐ์ฝ
- ์นดํ๋ฒ ๋ค ์งํ 1์ธต ์ฒ์ ๊ฐ๋ดค๋๋ฐ ์์ ํ๊ธฐ ์ต์ ํ๋์ด ์์๋ค ์์ผ๋ก๋ ์์ฃผ ์ฌ ๋ฏ!
๐ Catchoo ํ๋ก์ ํธ
- CORS ๋๋ฌธ์ ๋ชจ๋ ํ์๋ค์ด ๋จธ๋ฆฌ ์ธ๋งค๊ณ ์๋ ์ค.. ์ผ๋จ ํ๋ก ํธ์์ ๋ชจ์ข ์ ๋ฌธ์ ๋ก ์๋ฒ ์์ฒด๊ฐ ์คํ์ด ๋์ง ์์์ ๋ค๋ฅธ ๊ฑฐ ๋ค ์ค๋จํ๊ณ ๋ฐฐํฌ๋ถํฐ ์๋ํ๋ ์ค์ด๋ค.. ์ด๋ ๊ฒ ๋ก์ปฌ์์ ๋ฌธ์ ๋ ๋๋ง๋ค ํ์ธ์ ๋ชปํ๋๊น.. ใ _ใ ์๋ฒ ์คํํ๊ณ ์ธ๋ฐ์ด๋ ๊ท์น์ ํ์๋ค ์์ดํผ ๋ฃ์ผ๋ฉด ๋๊ฒ ์ง. ๊ทธ๋ฐ๋ฐ ์์ดํผ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ ์ด๋ป๊ฒ ํ์ง? ์ข ์ฐพ์๋ด์ผ๊ฒ ๋ค.
- Git ์ด ์ ๋ง ๋๋ฆฌ๊ฐ ๋์^_^ ๋ฃจํธํด๋๊ตฌ์กฐ ๋ณ๊ฒฝํ๋ค๊ณ ์ด๋ ๊ฒ๊น์ง ๊ท์ฐฎ์์ง ์ค์ ๋ชฐ๋์ง.. ๋คํํ๋ ์ฒ์ฌ๋ง์ฌ ํ์๋ถ์ด ํด๊ฒฐํด์ฃผ์ จ๋คใ ์์ธ์ .. ์ํผ conflict ๋ค ํด๊ฒฐํ๊ณ ๋ฌด์ฌํ master๊น์ง mergeํ๋ค. ์ด์ ๋ฐฐํฌ๋ฟ์ด์ผ
๐ JIB ํ๋ก์ ํธ
ํ๋ก์ ํธ์ฅ๋์ด ๊ทธ์ ๊ป ๋ด ์ฑ์ฅ์ผ๊ธฐ๋ฅผ ๋ณด์๊ณ ๋ฆฌ์กํธ ๋ฅ๋ ฅ์์ธ ์ค ์๊ณ ์ฐ๋ฝ์ ์ฃผ์ จ๋ค.. ํํํ ์ ๊ฐ ๋ฆฌ์กํธ ๋ฅ๋ ฅ์์ธ์ค ์์ จ๋ค๋ฉด ๊ฒฝ๊ธฐ๋ ์ค์ฐ์ ๋๋ค ๊ทธ์ ๊ป ์ฑ์ฅ์ผ๊ธฐ์ ํ๋ก ํธ์๋ ํํธ๋ ๋ฆฌ์กํธ ๋ฅ๋ ฅ์์ธ ์บฃ์ธ ํ์๋ถ๋ค์ด ํ์ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ..ใ ใ ์ ์ค๋ช ๋๋ฆฌ๋๊น ๊ทธ๋๋ ์ผ๋จ ์ด๋ ๊ฒ ๋๊ฑฐ ํ๋ก ํธ์๋๋ ํด๋ณด์! ํด์ ์ผ๋จ๊ฒฐ์ ํ๋ก ํธ ํ์๋ ์ฐธ์ํ๊ฒ ๋์๋ค. ๋๋ค ํ๋ฉด ์ ๋ง ์ข๊ฒ ์ง๋ง ์ ๋ง ํ ์ ์๋์ง๋ ์ข ๋ ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
ํ๋ก ํธ์๋ ํ์
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ ์ปดํฌ๋ํธ๋ก ๋๋๋ ๊ฒ์์ ์์ํ๋ค. ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ์กํธ์ ๊ฐ์ฅ ํต์ฌ
๋ณดํต ํ๋ก ํธ์์ ๋๊ฐ ํ๋ฉด ๋ฐ ๋ผ์ธ์ ์ฃผ๋ฉด ๊ธฐํํ์์ ์ด๋ฅผ ์ฑ์๋ฃ๋ ์์ผ๋ก ํ๋ก์ ํธ๊ฐ ์์ํ๋ค๊ณ ํ์ จ๋ค. ๋ฐฑ์๋๋ ์ด๊ฒ ๋์์ ๋ ์ข ๋์ค์ ์์ํ๋ค๊ณ .. ์ด ์ด์ผ๊ธฐ๋ฅผ ๋ค์ผ๋ฉฐ ์๋ฌด ์๊ฐ ์์ด ๋ฐฑ์๋์์ ๋ฐ์ดํฐ ์คํค๋ง๋ถํฐ ํ๋ฉด์ด ์ด๋ป๊ฒ ๋์ฌ ์ง ๋ค ์์ธกํ๊ณ ์ ํด์ ์์์ ํ๋ ์บฃ์ธ ํ๋ก์ ํธ๊ฐ ์๊ฐ๋๋ฉด์.. ๋๋ฌผ์ ํ์ณค๋ค..
๊ธฐํํ์์ ์์ฑํ ํ๋ก์ฐ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ๋น์ฆ๋์ค ์ดํด๋ฅผ ํ๋ ์๊ฐ์ ๊ฐ์ก๋ค.
Class Component๊ฐ ์๋ Functional Component๋ฅผ ์ฌ์ฉํ ๊ฑฐ๋ผ๊ณ ์ ํด์ก๋ค.
- Functional Component๊ฐ ๋ณด๋ค Class ๋ฐฉ์๋ณด๋ค ์ข ๋ ๊ฐ๋จํ๊ณ , ์์ฆ ํธ๋ ๋๋ผ๊ณ ํ๋ค. Class ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์ฑ์๋ ์ฌ์ฉํ๊ณ , ComponentDidMount, Update, Delete ๋ชจ๋ ์ฌ์ฉํด์ผ ํ๋ฉฐ render()๋ฅผ ๋ช ์์ ์ผ๋ก ์ฝ๋์ ์์ฑํด์ผ ํ๋ค. Functional ๋ฐฉ์์ ๊ฒฝ์ฐ ์ด ๋ชจ๋ ๊ฒ๋ค์ด ๋นํ์ธ๋ ์ฌ์์ ์ผ์ด๋๋ค๊ณ ํ๋ค.
- ์๋ฐ๋ก ๊ฐ๋ฐ์ ์์ํ๊ณ ํ์ฌ์งํํ์ผ๋ก ์๋ฐ๊ฐ๋ฐ์๋ก ๊ฐ๋ฐํ๊ณ ์๋ ๋๋ก์๋ ํด๋์ค ๋ฌธ๋ฒ์ด ๋ ์ง๊ด์ ์ด๋ผ๊ณ ๋๊ปด์ง์ง๋ง.. ๊ทธ๋๋ ๋นํ์ธ๋ ์ฌ์์ ์ด๋ฃจ์ด์ง๋ ์์ฐ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ํฅ์๋ ๊ฒ ๊ฐ๋ค.
- ์ค์ ๋ก ํจ์ํ์ ํด๋์ค๋ณด๋ค ํ์ ๋์๊ธฐ์ ๋ ํธํ๋ค๊ณ ํ๋ค. ํจ์ํ์ state, lifeCycle ๊ด๋ จ ๊ธฐ๋ฅ์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ์ง๋ง, ์ด๋ Hook์ ํตํด ํด๊ฒฐ๋๋ค๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋์คํ๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ ์ฌ์ฉํ๋ค. ๋ํ ์ปดํฌ๋ํธ ์ ์ธ์ด ํธํ๋ค๋ ์ฅ์ ์ด ์๋ค. ๋จ ์์ ๋ฉ์๋๋ ์ ์ํ ์๋ ์๋ค.
- ํด๋์คํ๊ณผ ํจ์ํ ์ฐจ์ด
๊ทธ๋ฆฌ๊ณ ๋์ฅ๋์ด ๋ฆฌ์กํธ LifeCycle์ด ์ค์ํ๋ค๋ฉด์ ์ค๋ช ํด์ฃผ์ จ๋ค.
์ถ์ฒ: https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/
- Mount(์์ฑ): ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋์ด, DOM์ ์ฝ์
๋ ๋ ์์๋๋ก ํธ์ถ๋๋ค.
- constructor()
- render()
- componentDidMount()
- Update: props๋ state๊ฐ ๋ณ๊ฒฝ๋๋ฉด render(๊ฐฑ์ )๊ฐ ์งํ๋๋ฉฐ ์์๋๋ก ํธ์ถ๋๋ค.
- render()
- componentDidUpdate()
- Unmount: ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋ ๋ ํธ์ถ๋๋ค.
- componentWillUnmount()
๋ฌ๊ธ์์ด ์คํ๋ง ๋น ์๋ช ์ฃผ๊ธฐ๊ฐ ์๊ฐ๋ฌ๋ค
- Mount(์์ฑ): ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋์ด, DOM์ ์ฝ์
๋ ๋ ์์๋๋ก ํธ์ถ๋๋ค.
๊ณผ์ : ๋ฆฌ์กํธ ์ฌ์ฉํด์ JIB์ ๊ฒ์ ๊ฒฐ๊ณผ ํ์ด์ง ๊ตฌํ
๋ฐฑ์๋์๋ ํ์
- DB ๊ฒฐ์
- NoSQL(MongoDB): ์กฐํ ์ฑ๋ฅ์ด ์ข๋ค.
- SQL + Redis: RDB๋ ์กฐํ ์ฑ๋ฅ์ด ์์ข๊ธฐ ๋๋ฌธ์ Redis๋ฅผ ์ ์ ํ ์ฌ์ฉํด ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํด ์ฑ๋ฅ์ ๋์ผ ํ์๊ฐ ์๋ค.
- ์์์ฑ ํ๋ ์์ํฌ(Persistance Framework)
- MongoDB๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, JPA์ฒ๋ผ ์ธํฐํ์ด์ค ์ ์ธ๋ง์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ์ ๊ฐ๋จํ๋ค.
- SQL์ ์ฌ์ฉํ ๊ฒฝ์ฐ JPA๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
- ๋ชฉํ
- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ(TDD)
- ํ์ฅ์ฑ ์๋(Scaleable) ๊ฐ๋ฐ