์ ๋ ์์์์ฑ ๋ถ์ผ์์ ์ผํ๋๋ฐ, ์ฌ๊ธฐ์ ์ฃผ๋ ์์น์ "๋ง์ด ํ๊ณ , ๋นจ๋ฆฌ ํ์ธ์"๋ผ๋ ๋ฌธ๊ตฌ๋ก ์ค๋ช
ํ ์ ์์ต๋๋ค. ๋ ๋นจ๋ฆฌํ ์๋ก ๋ ๋ง์ ์์ต์ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ๋ชฉ๋ฐ๊ณผ ์ฝง๋ฌผ์ด ์๋ ํ์ฉ ๊ฐ๋ฅํ ์์ค์ ํ์ง๋ก ์๋ํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค. ๋จ๊ธฐ๊ฐ์ ํ๋ก๋ชจ์
์๋น์ค๋ฅผ ๊ฐ๋ฐํด์ผ ํ๋ ๊ฒฝํ์ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์ํ ๋ : AWS์ ๋ฃจํธ ๊ณ์ , ๊ธฐ์ ์คํ ์ ํ์ ๋ํ ์ ํ ์์, ๋ฐฑ์๋ XNUMX๊ฐ, ๊ฐ๋ฐ ๊ธฐ๊ฐ XNUMX๊ฐ์.
์์
: ์ฌ์ฉ์๊ฐ XNUMX~XNUMX์ด ๊ธธ์ด์ ๋์์์ XNUMX~XNUMX๊ฐ ์
๋ก๋ํ ํ ์๋ณธ ๋์์ ์๋ฆฌ์ฆ์ ์ฝ์
ํ๋ ํ๋ก๋ชจ์
์๋น์ค๋ฅผ ๊ตฌํํฉ๋๋ค.
๊ฒฐ์
๊ทธ๋ ๊ฒ ์งง์ ์๊ฐ์ ์์ ๋ง์ ์์ ๊ฑฐ ์๋น์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋๋๋ค. ๋ํ, ์๋น์ค๊ฐ ๋ถํ๋ฅผ ๊ฐ๋นํ๊ณ ๋ชจ๋๊ฐ ์ํ๋ ์์์ ๋ฐ์ ์ ์๋๋ก ํ๊ธฐ ์ํด์๋ ์ธํ๋ผ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋นํ๊ธฐ ๊ฐ๊ฒฉํ๊ฐ ๋ถ์ด ์์ง ์์ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ต์ํ์ ๋ง์ถคํ๋ก ๊ธฐ์ฑ ์๋ฃจ์ ์ ์ฆ์ ์ง์คํฉ๋๋ค.
๋น๋์ค ์์ ์ ์ํ ํ์ค ์๋ฃจ์ ์ ์ธ์๋ฅผ ํตํด ์ค๋์ค๋ฅผ ์๋ผ๋ด๊ณ ์ค๋ฒ๋๋นํ ์ ์๋ ํฌ๋ก์ค ํ๋ซํผ ์ฝ์ ์ ํธ๋ฆฌํฐ์ธ FFmpeg์ ๋๋ค. ์ด์ ๋จ์ ์ผ์ ๋ํผ๋ฅผ ์์ฑํ์ฌ ์ค์ ๋ก ๊ตฌํํ๋ ๊ฒ๋ฟ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ ๋น๋์ค๋ฅผ ํ๋๋ก ๋ฌถ๋ ํ๋กํ ํ์ ์ ์์ฑํ๊ณ ... ์ฌ๋ฏธ๊ฐ ์์๋ฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ .NET Core 2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๋ชจ๋ ๊ฐ์ ๋จธ์ ์์ ์คํ๋์ด์ผ ํ๋ฏ๋ก AWS EC2 ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค.
์จ๊ฒจ์ง ํ
์คํธ์๋์, ์๋ํ์ง ์์ต๋๋ค
.
FFmpeg๋ ์์
์ ๋จ์ํํ์ง๋ง ์ค์ ๋ก ์๋ํ๋ ์๋ฃจ์
์ ์ํด์๋ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํฌํจํ์ฌ ์ด์ ๋ํ ๋คํธ์ํฌ ์ธํ๋ผ๋ฅผ ์ค๊ณํด์ผ ํฉ๋๋ค. ์ฒ์๋ถํฐ ๋ฐฐํฌํ๋ ๊ฐ๋จํ ์์
์ "์ฝ๊ฐ" ๋ ๋ณต์กํด์ง๊ณ ์ธํ๋ผ๋ ์ฆ์ ๋์ ์๊ตฌํ๊ธฐ ์์ํฉ๋๋ค. ๋งค์๊ฐ ๋ฐํ์ ๊ธ์ก์ด ํด๋ผ์ด์ธํธ ๊ณ์ ์์ ์ธ์ถ๋ฉ๋๋ค.
์ฐ๋ฆฌ ์๋น์ค๋ ์ฅ๊ธฐ ์คํ ํ๋ก์ธ์ค๋ฅผ ํฌํจํ์ง ์๊ณ , ํฌ๊ณ ๋ฐฉ๋ํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์๋ก ํ์ง ์์ผ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค ํธ์ถ ์ฒด์ธ์ด ์๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ์๋ฒฝํ๊ฒ ๋ค์ด๋ง์ต๋๋ค. ์๋ฃจ์ ์ ์์ฒด์ ์ผ๋ก ์ ์ํฉ๋๋ค. EC2๋ฅผ ๋ฒ๋ฆฌ๊ณ AWS Lambda ๊ธฐ๋ฐ์ ํ์ค Image Resizer์ ๊ฐ์ ์ง์ ํ ์๋ฒ๋ฆฌ์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , .NET์ ๋ํ AWS ๊ฐ๋ฐ์์ ๋ช ๋ฐฑํ ํ์ค์๋ ๋ถ๊ตฌํ๊ณ ๊ทธ๋ค์ .NET Core 2.1์ ๋ฐํ์์ผ๋ก ์ง์ํ์ฌ ๊ด๋ฒ์ํ ๊ฐ๋ฐ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ข์ ์ ์ AWS๊ฐ ๋น๋์ค ํ์ผ ์์ ์ ์ํ ๋ณ๋์ ์๋น์ค์ธ AWS Elemental MediaConvert๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค.
์์ ์ ๋ณธ์ง์ ๋๋ผ์ธ ์ ๋๋ก ๊ฐ๋จํฉ๋๋ค. ๋๊ฐ๋ ๋น๋์ค์ ๋ํ S3 ๋งํฌ๋ฅผ ๊ฐ์ ธ์ค๊ณ , AWS ์ฝ์, .NET SDK ๋๋ ๋จ์ํ JSON์ ํตํด ๋น๋์ค๋ก ์ํํ๋ ค๋ ์์ ์ ์์ฑํ๊ณ ์๋น์ค๋ฅผ ํธ์ถํฉ๋๋ค. ์์ฒด์ ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋๊ธฐ์ด์ ๊ตฌํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ S3 ์์ฒด์ ์ ๋ก๋ํ๋ฉฐ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฐ ์ํ ๋ณ๊ฒฝ์ ๋ํด CloudWatch ์ด๋ฒคํธ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋น๋์ค ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๊ธฐ ์ํด ๋๋ค ํธ๋ฆฌ๊ฑฐ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
์ต์ข
์ํคํ
์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ์ฒด ๋ฐฑ์๋๋ ๋ ๊ฐ์ ๋๋ค์ ๋ณด๊ด๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ํ๋๋ ์์ง ๋น๋์ค ํ์ ์ ์ํ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ์ด๋ฌํ ์์ ์ ํ ๋ฒ์ ์๋ฃํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐ๋ฆฌ๋ JS๋ก ์์ฑ๋๊ณ ํผ๊ทธ๋ฅผ ํตํด ์ปดํ์ผ๋ SPA ์ ํ๋ฆฌ์ผ์ด์ ์ ํํ๋ก ํผ๋ธ๋ฆญ S3 ๋ฒํท์ ๋ฐฐ์นํ ๊ฒ์ ๋๋ค. ๋น๋์ค ์์ฒด๋ฅผ ๋ค์ด๋ก๋ํ๋ ค๋ฉด ์๋ฒ ์ฝ๋๊ฐ ํ์ํ์ง ์์ต๋๋ค. S3๊ฐ ์ ๊ณตํ๋ REST ์๋ํฌ์ธํธ๋ง ์ด๋ฉด ๋ฉ๋๋ค. ์ ์ผํ ๊ฒ์ ์ ์ฑ ๊ณผ CORS๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ์์ง ์๋ ๊ฒ์ ๋๋ค.
์ฃผ์
- AWS MediaConvert๋ ์ ์ ์๋ ์ด์ ๋ก ๊ฐ ๋น๋์ค ์กฐ๊ฐ์๋ง ์ฌ์ด๋๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ฉํ์ง๋ง ์ ์ฒด ํ๋ฉด ๋ณดํธ๊ธฐ์์ ์พํํ ๋ ธ๋๊ฐ ํ์ํฉ๋๋ค.
- ์ธ๋กํ ๋์์์ ๋ณ๋๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. AWS๋ ๊ฒ์์ ๋ง๋๋ฅผ ์ข์ํ์ง ์์ผ๋ฉฐ ๋กค๋ฌ๋ฅผ 90ยฐ๋ก ์ค์ ํฉ๋๋ค.
์ฌ์ด ์ค์ผ์ดํธ์ฅ
Stateless์ ๋ชจ๋ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ ๋น๋์ค๋ก ์ํํด์ผ ํ ์์ ์ ์ถ์ ํด์ผ ํฉ๋๋ค. ์ฆ, ์์ฑ๋ ๋น๋์ค ์ํ์ค์ ์ค๋์ค๋ฅผ ๋ถ์ด๊ฑฐ๋ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. ๋คํํ MediaConvert๋ ์์ ์ ํตํ ๋ฉํ๋ฐ์ดํฐ ์ ๋ฌ์ ์ง์ํ๋ฉฐ ์ธ์ ๋ ์ง "isMasterSoundJob" ํ์์ ๊ฐ๋จํ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋จ๊ณ์์ ์ด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค.
์๋ฒ๋ฆฌ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ์ธํ๋ผ๋ฅผ ๋ด๋นํ๋ ๋ณ๋์ ํ์ด ๋ถํ์ํ๋ค๊ณ ๊ฐ์ ํ๋ ์ ๊ทผ ๋ฐฉ์์ธ NoOps ์์
์ ์๋ฒฝํ๊ฒ ์ํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ ์์ ๋ฌธ์ ์์ต๋๋ค. ํญ์ ํ ์ผ์ด ์๋ ์์คํ
๊ด๋ฆฌ์์ ์ฐธ์ฌ ์์ด AWS์ ์๋ฃจ์
์ ๋ฐฐํฌํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ์์
์ โโ์๋๋ฅผ ๋์ด๊ธฐ ์ํด AWS CloudFormation์์ ๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ต๋ํ ์๋ํํฉ๋๋ค. ์ด๋ฅผ ํตํด VS์์ ๋ฒํผ ํ๋๋ก ์ง์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก 200์ค์ ์ฝ๋ ํ์ผ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์ฑ ์๋ฃจ์
์ ์ถ์ํ ์ ์์ต๋๋ค. ๋จ, CloudFormation ๊ตฌ๋ฌธ์ด ์ต์ํ์ง ์์ ๊ฒฝ์ฐ ์ถฉ๊ฒฉ์ ์ผ ์ ์์ต๋๋ค.
์ ์ฒด๋ก
์๋ฒ๋ฆฌ์ค๋ ๋ง๋ณํต์น์ฝ์ด ์๋๋๋ค. ๊ทธ๋ฌ๋ "์ ํ๋ ์์, ๋จ๊ธฐ, ์ ์ ๋"์ด๋ผ๋ ์ธ ๊ฐ์ง ์ ํ์ด ์๋ ์ํฉ์์๋ ์ถ์ด ํจ์ฌ ๋ ์ฌ์์ง ๊ฒ์ ๋๋ค.
์๋ฒ๋ฆฌ์ค์ ์ ํฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ง
- ์ฅ๊ธฐ ์คํ ํ๋ก์ธ์ค ์์ด. API Gateway ํ๋ ์ ํ์ 29์ด, ๋๋ค ํ๋ ์ ํ์ 5๋ถ์ ๋๋ค.
- ์ด๋ฒคํธ ์ค์ฌ ์ํคํ ์ฒ๋ก ์ค๋ช ๋ฉ๋๋ค.
- SOA์ ๊ฐ์ด ๋์จํ๊ฒ ๊ฒฐํฉ๋ ๊ตฌ์ฑ ์์๋ก ๋ถํด๋ฉ๋๋ค.
- ๊ทํ์ ์ํ์ ๋ฐ๋ผ ๋ง์ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค.
- .NET Core๋ก ์์ฑ๋์์ต๋๋ค. .NET Framework๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ ์ ํ ๋ฐํ์์ด ํฌํจ๋ Docker๊ฐ ์ต์ํ ํ์ํฉ๋๋ค.
์๋ฒ๋ฆฌ์ค ์ ๊ทผ ๋ฐฉ์์ ์ด์
- ์ธํ๋ผ ๋น์ฉ ์ ๊ฐ;
- ์๋ฃจ์ ์ ๊ณต ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
- ์๋ ํ์ฅ์ฑ;
- ๊ธฐ์ ์ง๋ณด์ ์ต์ฒจ๋จ์์์ ๋ฐ์ .
๋จ์ , ๊ตฌ์ฒด์ ์ธ ์
- ๋ถ์ฐ ์ถ์ ๋ฐ ๋ก๊น - AWS X-Ray ๋ฐ AWS CloudWatch๋ฅผ ํตํด ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐ๋์์ต๋๋ค.
- ๋ถํธํ ๋๋ฒ๊น ;
- ๋ถํ๊ฐ ์์ ๋ ์ฝ๋ ์คํํธ;
- AWS ์ฌ์ฉ์์๊ฒ ์ ๋์ ์ธ ์ธํฐํ์ด์ค๋ ๋ณดํธ์ ์ธ ๋ฌธ์ ์ ๋๋ค :)
์ถ์ฒ : habr.com