์๋ ํ์ญ๋๊น!
์ฐ๋ฆฌ๋ Raiffeisenbank์ .NET ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ด๋ฉฐ ๋จ์ผ ์์ฝ์์คํ ์ผ๋ก ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ๊ธฐ ์ํ .NET Core ๊ธฐ๋ฐ ์ธํ๋ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ค์ ๊ทธ๊ฒ์ ์คํ ์์ค๋ก ๊ฐ์ ธ์์ต๋๋ค!
์ญ์ฌ์ ๋นํธ
์๋ ์์ ์ ์ฐ๋ฆฌ๋ ๋๊ท๋ชจ ๋ชจ๋๋ฆฌ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ฐ, ์ด๋ ์ ์ฐจ ๋ง์ดํฌ๋ก์๋น์ค ์ธํธ๋ก ๋ณํ์ต๋๋ค. (์ด ํ๋ก์ธ์ค์ ๊ธฐ๋ฅ์ ๋ํ ๋ด์ฉ์ ๋ค์์์ ์ฝ์ ์ ์์ต๋๋ค.
์๊ฐ์ด ํ๋ฅด๋ฉด์ ํ๋ก์ ํธ๋ ์ ์ฐจ ๋จํธํ๋์๊ณ , ์ต์ JS ํ๋ ์์ํฌ์์ ์๋ก์ด ํด๋ผ์ด์ธํธ์ธก ๋ชจ๋์ ์์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ค๋ ์๊ตฌ๊ฐ ์๊ฒผ์ต๋๋ค. ์ฐ๋ฆฌ๋ WCF/SOAP์์ REST/HTTP๋ก ์ด๋ํ๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ AspNet WebApi ๊ธฐ๋ฐ ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ๊ธฐ ์ํ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ์ต๋๋ค. .Net Framework 4.5์ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ ์ฐ๋ฆฌ ๊ฑด์ถ๊ฐ๊ฐ ์ฌ๊ฐ ์๊ฐ์ ๊ฑฐ์ ๋ฌด๋ฆ์ ๊ฟ๊ณ ๋ง๋ ๊ฒ์ด์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ์ฆ(NTLM)์ด ํฌํจ๋ Program.cs์ ์ธ ์ค๋ก ์๋น์ค๋ฅผ ์์ํ ์ ์๊ฒ ๋์์ต๋๋ค. Logging, Swagger, Castle Windsor ๊ธฐ๋ฐ์ IoC/DI, ๋ค์ํ ํค๋๋ฅผ ์ ๋ฌํ์ฌ ์ ์ฒด ํ๋ก์ ํธ์ ๊ฑธ์ณ ์๋ํฌ์๋ ๋ก๊น ์ ์ ๊ณตํ๋ ๋ง์ถคํ HTTP ํด๋ผ์ด์ธํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ์๋น์ค ๊ตฌ์ฑ ํ์ผ์์ ์ง์ ์ถ๊ฐ๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ด ์์กฐ๋กญ๊ฒ ์งํ๋ ๊ฒ์ ์๋๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ๋ชจ๋ ๋์ ์ธก๋ฉด์์ ์ ์ฐ์ฑ์ด ๋งค์ฐ ๋จ์ด์ง๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ํน๋ณํ ๋ฏธ๋ค์จ์ด๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์๋น์ค๋ฅผ ์คํํ๋ ๊ธฐ๋ณธ ํด๋์ค์์ ์์ํด์ผ ํ๋๋ฐ ์ด๋ ๋งค์ฐ ๋ถํธํ์ต๋๋ค. ๋คํํ ๊ทธ๋ฐ ๊ฒฝ์ฐ๋ ๊ทธ๋ฆฌ ๋ง์ง ์์์ต๋๋ค.
๋์ปค์ ์ฟ ๋ฒ๋คํฐ์ค์ ์๋
Docker์ Kubernetes์ ๋ฌผ๊ฒฐ์ด ์ฐ๋ฆฌ์๊ฒ ๋ค๊ฐ์จ ๋๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๋ฉด๋ฐํ ๊ด์ฐฐํ์ต๋๋ค. ๊ฒฐ๊ตญ ์ด๋ .Net Core์์ ๊ธฐ์ ์ ๋ฐ๋ผ ๋ ๋ฐ์ ํ ์ ์๋ ์ข์ ๊ธฐํ์์ต๋๋ค. ์ด๋ ์๋น์ค๋ฅผ ์คํํ๋ ค๋ฉด ์๋ก์ด ์ธํ๋ผ๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์ง์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ ์์ด .Net Framework์์ .Net Standard ๋ฐ .Net Core๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋์์ผ๋ฉฐ ์ผ๋ถ๋ ์ฝ๊ฐ ๊ฐ์ ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌด์๋ณด๋ค๋ AspNet Core์์ ์๋น์ค ์์๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ฌ์์ ํ๊ณ ์ถ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋จผ์ ๊ณ ๋ คํ ๊ฒ์ ์ด์ ๋ฒ์ ์ ์ฃผ์ ๋จ์ ์ธ ์ ์ฐ์ฑ ๋ถ์กฑ์ ์ ๊ฑฐํ๋ ๊ฐ๋ ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์ ์ฒด ๋์๊ด ์์คํ ์ ์ต๋ํ ๋ ๋ฆฝ์ ์ด๊ณ ๋ชจ๋ํํ์ฌ ๊ตฌ์ฑ์๋ก์ ๊ธฐ๋ฅ์ ํ์ํ ์๋น์ค๋ฅผ ๋ชจ์ผ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ฃผ์ ๋ชฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ฒ์ค ๋ฐ ๊ธฐํ ์๋น์ค์ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ํตํฉ ์ ๊ทผ ๋ฐฉ์์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํตํฉ์ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ๋ง๋ค๋ ค๊ณ ๋ ธ๋ ฅํ์ผ๋ฉฐ ๊ฐ๋ฐ์๋ ์ธํ๋ผ๋ณด๋ค๋ ๋น์ฆ๋์ค ๋ก์ง ์์ฑ์ ์ง์คํ ์ ์์์ต๋๋ค. ์ด๋ฏธ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ๊ณตํต ์ ์ฅ์๋ ํ ๋ด ์ํธ ์์ฉ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋งค์ฐ ์ ์ฌํ ๋ด๋ถ ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ์ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ฐธ์ฌํ๊ณ ์ ๋ฌธ ์ง์์ ๊ตํํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์คํ์์ค๊ฐ ํ์ํ๊ฐ์?
์ฐ๋ฆฌ๋ ์ ๋ฌธ์ฑ์ ์ฑ์๋๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๊ณ ํ์ง์ ํผ๋๋ฐฑ์ ๋ฐ๊ณ ์ถ์ต๋๋ค. ์ํ ์ธ๋ถ์ ์ฌ๋๋ ์ค์ค๋ก ๋ญ๊ฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ์ ๊ณ์์ .NET์์ ๋ง์ดํฌ๋ก์๋น์ค ๋ฐ DDD ์์ ์ ์ํ ์ฌ๋ก ๊ฐ๋ฐ์ ๊ด์ฌ์ด ์์ต๋๋ค. ์๋ง๋ ๋๊ตฐ๊ฐ๊ฐ ํ๋ ์์ํฌ์ ํน์ ๋ถ๋ถ์ ์ธ์ํ๊ณ ์ถ์ดํ ๊ฒ์ ๋๋ค.
์ฌ์ค ๋น์๋๋ท์
์ด์ ์ข ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ViennaNET.WebApi.*
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธํธ๋ CompanyHostBuilder ์๋น์ค์ฉ ๋น๋ ํด๋์ค๋ฅผ ํฌํจํ๋ "๋ฃจํธ" ViennaNET.WebApi์ ๊ตฌ์ฑ์ ์ธํธ ViennaNET.WebApi.Configurators.*๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋น์ค. ๊ตฌ์ฑ์ ์ค์์ ๋ก๊น , ์ง๋จ, ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ์ ํ, Swagger ๋ฑ์ ๋ํ ์ฐ๊ฒฐ์ ์ฐพ์ ์ ์์ต๋๋ค.
ViennaNET.WebApi.Runners.*์๋ ์ฌ์ ๊ตฌ์ฑ๋ ์๋น์ค ๋น๋๋ ํฌํจ๋์ด ์์ต๋๋ค. ์ด ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌ์ฑ์๊ฐ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ์ ์๋น์ค๋ฅผ ์์ฑํ ๋๋ง๋ค ๊ธฐ์ตํ์ง ์์๋ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์๋น์ค ๋น๋์ ๊ธฐ๋ฅ์ ์ ํํ์ง๋ ์์ต๋๋ค.
ViennaNET.Mediator.*
์๋น์ค ๋ด์ ๋ช ๋ น ๋ฐ ์์ฒญ์ ์ํ ๋ด๋ถ ์ค๊ฐ ๋ฒ์ค๋ฅผ ์์ฑํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์๋ฅผ ๋ค์ด ์ปจํธ๋กค๋ฌ์์ DI ์ฃผ์ ํ์๋ฅผ ํ๋๋ก ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ์์ฒญ์ ๋ค์ํ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ฒ๋ฆฌ๋ฅผ ํตํฉํ๊ณ ์ฝ๋ ์์ ์ค์ผ ์ ์์ต๋๋ค.
ViennaNET.๊ฒ์ฆ
์ ํจ์ฑ ๊ฒ์ฌ ๊ท์น ๋ฐ ์ํ์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ํด๋์ค ์งํฉ์ด ํฌํจ๋ ์ด์ ๋ธ๋ฆฌ์ ๋๋ค. ๊ฐ ๋น์ฆ๋์ค ์กฐ๊ฑด์ ๊ฐ๋จํ๊ณ ๋ณ๋์ ๊ท์น ํํ๋ก ์ค๋ช ํ ์ ์์ผ๋ฏ๋ก ๋๋ฉ์ธ ๊ฒ์ฆ ๊ตฌํ์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
ViennaNET.Redis
Redis๋ฅผ ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์๋ก ์ฌ์ฉํ์ฌ ํธ๋ฆฌํ๊ฒ ์์ ํ ์ ์๋๋ก ๋ํผ๊ฐ ํฌํจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
ViennaNET.์ฌ์
์ฌ์ ํจํด์ ๊ตฌํํ๋ ํด๋์ค๊ฐ ํฌํจ๋ ์ด์ ๋ธ๋ฆฌ์ ๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ ์ธํธ์ ์๋ ์ ๋ถ๋ ์๋๋๋ค. ๋๋จธ์ง๋ ๋ณผ ์ ์์ด์
์ฌ๋ฌ๋ถ์ ๊ด์ฌ์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ, ์ฌ๋ฌ๋ถ์ ์๊ฒฌ๊ณผ ๋์ด์ค๊ธฐ ์์ฒญ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com