๋ฆฌํฉํ ๋ง ๊ณํ
์ค๋๋ง์ ๋ธ๋ก๊ทธ์ ๊ธ์ ์ด๋ค.
์ง๋ ๋ฉฐ์น ๋์ ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ํด AWS ๋ง๊ตฌ์ฑ์ ํ๊ณ , ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ฉฐ ๋ฐฐํฌ๊น์ง ์์ผฐ๋ค.
๋ถํ ํ ์คํธ๋ฅผ ์๋๊ณ , ์ข์ ๊ธฐํ๋ฅผ ์ป์ด ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ฒ ๋์๋ค.
๊ฒฐ๋ก ์, ์ด ์ํ๋ก ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๋ ์๋ฏธ๊ฐ ์์ ์ ๋๋ก ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ง์๋ค.
ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉฐ ์์ฌ์ด ์ฝ๋ ์์ฑ ๋ถ๋ถ๋ ๋ง์๊ณ , ๊ถ๊ธ์ฆ๋ ๋ง์์ง๋ง, ๋๋จธ์ง ์ฃผ๊ด์ ์ธ ํ๋จํ์ ๊น๋ํ ๋ถ๋ถ์ ๋๋ฆ ๊ด์ฐฎ๊ฒ ์์ฑ์ ํ๋ค๊ณ ์๊ฐํ์๋ค.
์์ง ๊ณ ์น ๊ฒ ๋ง์๊ณ , ๋ฐฐ์ธ๊ฒ ๋ง์๊ณ , ๋ชฐ๋๋ ๊ฒ์ด ๋ง์ ๋์๋ค. ์ด๋ฐ ๋ฆฌ๋ทฐ๋ฅผ ๋ค์ ๋๋ง๋ค ๋๋ ์์ง ํ์ฐธ ๋ฉ์๊ตฌ๋.
๊ณต๋ถ ๊ธฐ๊ฐ ๋๋น ๋ง์ ์ฑ์ฅ์ ๊ฑฐ๋์๋ค๊ณ ์๊ฐํ๋๋ฐ, ๋ด๊ฐ ์์ฌ์ด ๋ง์ ๊ฑด์ง.
์ฌ์ค์ ๊ธฐ๊ฐ ๋๋น ์ฑ์ฅ์น๊ฐ ํ๊ท ์น์๋ ๊ฑด์ง.
๋ฌด๊ธฐ ํด์ง๋ค.
๋๋ฌด ๊ธํ๊ฐ?
๊ทธ๋ผ์๋ ๋นจ๋ฆฌ ์ทจ์ ํด์ผ ํ๋ ์ด์ ๊ฐ ์๋ค. ๋ ๋ ์ชผ์์ผ ๋ ๊ฒ์ด๋ค. ์ด์ฉ ์ ์๋ค.
์ข์ ๊ธฐํ๊ฐ ์๊ฒผ๋ค. ๊ณ ๋ฏผํ๋๋ผ ๋จธ๋ฆฌ๊ฐ ๊นจ์ง ๊ฒ ๊ฐ๋ค.
๋ ์ข์ ๋ถ๋ถ์ ์ด์ฑ์ ์ผ๋ก ์ถ๋ ค ๋น๊ตํ๋ ๊ณผ์ ๊ฐ ์ค์ค๋ก์๊ฒ ์ฃผ์ด์ก๋ค.
Module ๊ด๋ จ
๋ชจ๋ ์ด๋ฆ์ด module-common์ผ๋ก ์ง์ ์ด์
> ํด๋น ๋ชจ๋์ ๋ชจ๋๋ฆฌ์์ผ๋ก ๋์ด์๋๋ฐ, ๋ณดํต ๋ค๋ฅธ ๋ชจ๋์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ชจ๋์ ์ด๋ฆ์ด common์ด๋ผ ํ๋ค. ์ฌ์ฉ์ฒ์ ๋ง๊ฒ ์ด๋ฆ์ ๊ณ ๋ฏผํด๋ด์ผ ๋ ๊ฒ ๊ฐ๋ค.
> ๋ชจ๋์ ๋๋ ์ด์ ๋ MSA ํ๊ฒฝ์ ๊ณ ๋ คํด ๋ณธ ๊ฒ์ด ์ ์ผ ํฌ๋ค.
๋ณธ ์๋ฒ์ ์ฅ์ ๊ฐ ์์ ๋ ์ด๋ฉ์ผ ์ ์ก ๊ธฐ๋ฅ์ ์ฅ์ ๊ฒฉ๋ฆฌ๋ฅผ ์ํค๊ฒ ์ํด ๋ณ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋์ํ ์ ์๊ฒ ๋ฉํฐ ๋ชจ๋์ ๊ณ ์ํ๊ฒ ๋์๋ค.
> ๊ฒฐ๋ก ์ ์ผ๋ก ๊ธฐ๋ฅ ๋ณ๋ก ๋ชจ๋ํ๋ฅผ ํด์ผ ํ ์ง ํฌ๊ฒ ๊ณ ๋ฏผ์ด ๋๋ค.
๊ณตํต, api, mail??
๊ฐ์ฒด ๋งคํ ์ model mapper๋ฅผ ํํ ์ด์
> dto์ VO, dto์ Entity ๋งคํ์ ํ ๋ชฉ์ ์๋ง ์ง์ฐฉํ๊ณ , ์ฑ๋ฅ์ ๊ณ ๋ คํ์ง ์์๋ ๊ฒ ๊ฐ๋ค.
๋ฌด์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์ฑ๋ฅ์ ์ง์ฐฉํ๋ ์ต๊ด์ ๋ค์ฌ์ผ๊ฒ ๋ค.
> MapStruct๋ฅผ ์ฌ์ฉํด์ ๊ณ ์ณ๋ณด์.
์ปจํธ๋กค๋ฌ์ ์ฑ ์์ ๊ดํ์ฌ
> ์ปจํธ๋กค๋ฌ๋ request, response์ ์ญํ ์ด ์ฃผ๋ ๋ชฉ์ ์ด๋ค. ์ด๋ค ๊ฐ์ ์๊ณ ์์ ํ์๊ฐ ์๋ค.
> enum์ผ๋ก ๊ด๋ฆฌํ๊ฑฐ๋, Service์์ ์๊ณ ์์ผ๋ฉด ์ข์ ๋ฏ์ถ๋ค.
์ค์นผ๋ผ์ ์๋ต ๋ฉ์์ง
> Path๋ก ๋ฐ๋ ์ค์นผ๋ผ ๊ฐ์ ์ํํ๋ค. ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ฉด ๋ถํ์ํ ์์ ์ด ์ด๋ค์ง ๊ฒ์ด๋ค.
์ด๊ฑด ์ด๋ฏธ ์๊ณ ์์๋๋ฐ๋, ๋์น ๋ถ๋ถ์ด๋ค. ๋ฌด์กฐ๊ฑด ๋งคํ ๋งคํ ๋งคํ.
> ์๋ต ์ฝ๋๊ฐ 200์ผ ๊ฒฝ์ฐ๋ ๊ตณ์ด ResponseEntity ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ ๊ฒ์ด๋ค.
๋ฌผ๋ก ๋ณธ์ธ์ ์ฝ๋ ์์ฑ ๊ท์น์ ์ ๋ฆฝํ ๊ฒฝ์ฐ ๊ทธ์ ํฉ๋นํ ์ด์ ๊ฐ ์์ผ๋ฉด ์ข๋ค.
์ํ๋ฅผ ๊ฐ๊ณ ์๋ Bean
> Bean์ ๊ฐ๋ณ์ ์ธ ์ํ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉด ์ํํ๋ค. Thread-Safe ํ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ธ๋ฐ, ์ข ๋ ์ ์คํ ํ์๊ฐ ์๋ค.
> ์ด๊ฒ ๋ถํ ํ ์คํธ๋ฅผ ์ค๋จํ ๊ฐ์ฅ ํฐ ์ด์ ์ด๋ค. ๊ฑฐ๊ตญ์ ์ธ ์์ ์ด ํ์ํ๊ฒ ๋ค.
WAS๋ ํญ์ ๋ฉํฐ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ๊ฒ์ ์์ง ๋ง์.
Null ์ฒดํฌ์ Exception ์ฒ๋ฆฌ
> ์ปจํธ๋กค๋ฌ๋ ์ด๋ฌํ ๋ก์ง์ ๊ฐ์ง ์ด์ ๊ฐ ์๋ค. ์ต๋ํ ์๋น์ค์์ ์ฒ๋ฆฌ
> ์ด๋ด ๊ฒฝ์ฐ Exception์ ๋์ ธ, RestControllerAdvice์์ ๊ณตํต ์ฒ๋ฆฌ
> Null ์ฒดํฌ ๊ด๋ จ์ Optional์ ์ ์ฉํด๋ณด์.
์ฝ๋์ ์ถ์ํ ์์ค์ ๊ณ ๋ ค
> ์ถ์ํ ์์ค์ ํญ์ ์ผ๊ด๋์ด ์์ด์ผ ๊ฐ๋ ์ฑ์ด ์ข๋ค.
์ฃผ๋ฌธ, ๊ฒฐ์ ๋๋ฉ์ธ ๊ด๋ จ
> ์์กด์ฑ์ ํ์คํ ๋ถ๋ฆฌํ์
Optional
> null์ ๋ฐํํ์ง ๋ง์.
> ์ฐจ๋ผ๋ฆฌ ๋น์ด์๋ ์ฟ ํค๋ฅผ ๋ฐํ
Map์ ์ฌ์ฉ
> Util ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ Map ๋ฐํ์ ์ต๋ํ ์ง์ํด์ผ ํ๋ค. ํ์ ์ถ๋ก ์ด ์ด๋ ค์์ง๋ค.
> ์ผ๋ฐ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ฃผ์.
> Map์ ์ด์ฉํ ๊ฒฝ์ฐ ๋ด๋ถ์์ ์ฒ๋ฆฌํ ๋๋ง.
Service Layer ํจ์์ ๋ค๋ฅธ ํจํค์ง ํ์ ์ return
> Cookie๋ javax.servler.http ํจํค์ง์ ํด๋์ค. ์ด ๋ ๊ฒ์ ๊ทธ๋๋ก ๋ฆฌํดํ ๊ฒฝ์ฐ, ๋ณ๊ฒฝ ์์ ์ ๋ง ์ทจ์ฝํด์ง๋ค
> ํจํค์ง์ ์์กด์ฑ์ ์๊ฐํ์.
> ์ด ์ญ์ ๋งคํ
์ด๋ฒคํธ ํผ๋ธ๋ฆฌ์ ๊ด๋ จ
> ์ด๋ฒคํธ ํผ๋ธ๋ฆฌ์ ๋ ๋ณดํต ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ ํ์ฉ.
> ํด๋น ๋ก์ง์ ์ ์ฐจ์ ์ธ ๋ก์ง์ด๋ฏ๋ก, ๋น๋๊ธฐ์ ๊ด๋ จ์ด ์๋ค. ๋ฐ๋ก ๋ฉ์๋๋ก ๋์ฒดํด๋ ๋ ๊ฒ ๊ฐ๋ค.
RestTemplate๊ณผ try-catch
> restTemplate์ deprecated ๋์์ผ๋ฏ๋ก, webClient ์ฌ์ฉ์ ๊ณ ๋ฏผ
> catch๋ผ๋ ๊ฒ์ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ค๋ ์๋ฏธ์ธ๋ฐ, ๋จ์ํ log๋ก ๋๋ด๋ ๊ฑด ํฉ๋นํ ๊ฒฝ์ฐ์ด๋ค. Exception์ ๋์ ธ์ ํด๊ฒฐํ๋ ์ต๊ด์ ๊ธฐ๋ฅด์.
> null ๋ฆฌํด์ ํญ์ ๊ธ๋ฌผ => ๋ฐ์์ null ์ฒดํฌ๋ฅผ ํ๊ฒ ๋๋ ๋ถ์์ฌ๊ฐ ๋ฐ์
์๊ฐํด๋ณด๋, ์ ์ฅ์๋ฅผ ํ๋ ๋ ํ๋๊ฒ ์ข์ ์๋ ์์ ๊ฒ ๊ฐ๋ค.