์ฌํ ์ผ์ ์ ํ์๋ผ์ธ์ผ๋ก ๊ธฐ๋ก ํ๊ณ ๊ณต์ ํ๋ ์ฌํ SNS ์๋น์ค ์
๋๋ค.
๋๋ง์ ์ฌํ์ ๊ณต์ ํ๊ณ ๋ค์ํ ์ฌํ๋ค์ ๋ง๋๋ณด์์ :)
๋๋ ๋น์ทํ ์ทจํฅ๊ณผ ํ๊ฒฝ์ ๊ฐ์ง ๋ค์ํ ์ฌํ๋ค์ ๋ง๋๊ณ ๋๋ง์ ์ฌํ ๊ณํ์ ์ง๋ณด์์ !
์ง์ญ, ๊ธฐ๊ฐ, ํ
๋ง ๋ฑ ์ด 8 ๊ฐ์ง์ ํํฐ๋ฅผ ํตํด ๋ด๊ฐ ์ํ๋ ์ฌํ์ ์ฐพ์ ์ ์์ด์.
ํค์๋ ๊ฒ์์ ํตํด ์ํ๋ ์ฌํ์ ๋ฐ๋ก ํ์ํ ์ ์์ด์.
๋งค ๋ ์ง๋ง๋ค ์๊ฐ ์์ผ๋ก ๊ธฐ๋ก๋ ์ฌํ๋ค์ ํตํด ๋ณด๋ค ์ฝ๊ฒ ์ผ์ ์ ํ์ธํ ์ ์์ด์.
์ง๋๋ก ๋ณด๊ธฐ ๊ธฐ๋ฅ์ ํตํด ์ด๋ค ์ฅ์์ ๋จธ๋ฌผ๋ ๋์ง ์ง๋๋ก ํ๋์ ๋ณผ ์ ์์ด์.
iOS
BE
ํ์ฌ ์๋น์ค ๊ธฐํ ๊ฐ ๋ณต์กํ ์ํคํ
์ฒ์ ํ์์ฑ์ ๋๋ผ์ง ๋ชปํ๊ณ , ์์
๊ฐ ๋ก์ง ๋ถ๋ฆฌ์ ์ฉ์ดํจ์ ์ํด ์ ํํ์ต๋๋ค.
๋ํ ์ฌ๋ฌ ๋ช
์ด ๋์์ ๊ฐ๋ฐํด์ผํ๊ธฐ ๋๋ฌธ์ CleanArchitecture๋ฅผ ํ์ฉํด ์ญํ ๋ถ๋ฆฌ๋ฅผ ํ์คํ ํด๋์ด ์ฝ๋์ ํต์ผ์ฑ์ ์ ์งํ์ต๋๋ค.
Repository ํจํด์ ํตํด Data Source๋ฅผ ์บก์ํํ ์ ์์๊ณ , RepositoryMock์ ์ด์ฉํด ์๋ฒ ๊ฐ๋ฐ ์ํฉ์ ๊ด๊ณ์์ด ๊ฐ๋ฐ์ ์งํํ ์ ์์์ต๋๋ค.
Third-party์ธ RxSwift์ ๋นํด ์๊ฐ, ๊ณต๊ฐ์ ์ฑ๋ฅ์ด ์ฐ์ํ๊ธฐ ๋๋ฌธ์ First-party์ธ Combine์ ์ ํํ์ต๋๋ค.
๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์กฐ์ํ๊ณ ๊ตฌ๋
ํ๋ ๊ฒ์ ์ต์ ํ๋ Combine์ UI Binding์ ํ์ฉํ์ต๋๋ค.
Concurrency๋ฅผ ํ์ฉํด ๋จ๋ฐ์ฑ ๋น๋๊ธฐ ์๋ต์ธ ๋คํธ์ํฌ ๋ก์ง์ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๊ธฐ ์ํด ์ ํํ์ต๋๋ค.
Repository - Network์ ํ๋ฆ์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์์ต๋๋ค.
์ง๋ ์์ ๋ง์ปค๋ฅผ ํ์ํ๊ณ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
์์น ์ขํ ์ ๋ณด๋ง ์๋ฒ์์ ๋ฐ์์ค๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ Third-party ์ง๋๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํด ์ ํ ํ๋ ์์ํฌ์ธ MapKit์ ์ ํํ์ต๋๋ค.
๋ก๊ทธ์ธ ์ดํ ํ ํฐ ๋ฑ ๋ฏผ๊ฐํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค.
์ํํ ํ์
๊ณผ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์ํด ์์จ์ฑ์ด ๋์ Express๋ ์ ์ ํ์ง ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ฐ๋ผ์ ์ํคํ
์ฒ๊ฐ ๊ฐ์ถฐ์ง๊ณ , TypeScript๊ฐ ๊ธฐ๋ฐ์ธ NestJS๋ฅผ ์ ํํ์ต๋๋ค.
์ผ์ธ์ TypeORM๊ณผ ์์ฆ ํซํ Prisma. TypeORM ์ฌ์ฉ์์๊ฒ Prisma๊ฐ ์ธ๊ธฐ ์๋ ์ด์ ๋ฅผ ์ดํดํ๋ ค๋ฉด TypeORM์ ์์์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ํฌ๋ ๋จผ์ TypeORM์ ๊ฒฝํํ๊ณ ์ ํ์ต๋๋ค.
traveline ์ฑ์ ํ๋์ ๊ฒ์๊ธ์ ์ฌ๋ฌ ํ์๋ผ์ธ ๊ธ์ด ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ํ ๊ฐ ๊ฒ์๊ธ์๋ ์ข์์์ ์ ๊ณ ์ ๋ณด๊ฐ ์กด์ฌํฉ๋๋ค.
ํ
์ด๋ธ ๊ฐ join ์ฐ์ฐ์ด ๋ง์ด ๋ฐ์ํ ๊ฒ์ด๋ฏ๋ก NoSQL๋ณด๋จ RDB๊ฐ ์ ์ ํ๋ค๊ณ ํ๋จํ์ต๋๋ค.
์๋ ์๋ ๋ฐฐํฌ๋ฅผ ์๋ํ์ง๋ง, node ๋ฒ์ ์ด์์ systemd service ๋ฑ๋ก ๊ณผ์ ์ ์ด๋ ค์์ ๊ฒช์์ต๋๋ค. ๋ฐ๋ผ์ ๋ก์ปฌ ์์
ํ๊ฒฝ์ ๊ทธ๋๋ก ์ปจํ
์ด๋๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ , ์ด์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ง์์ ์ธ ๋ฐฐํฌ์๋ ์ ์ฉํ Docker๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Swagger API๋ฅผ ์๋๋ฌ iOS ์ธก์ ๊ณต์ ํ๊ธฐ ์ํด ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๊ณ , ์ ์ํ ์ธํ
์ด ๊ฐ๋ฅํ GitHub Actions๋ก ๋ฐฐํฌ๋ฅผ ์งํํ์ต๋๋ค.
์ ํ ์ ์ฑ
์ ipa๋ https์์๋ง ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด์, 90์ผ๋ง๋ค SSL ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํด์ผ ํ์ง๋ง ๋ฌด๋ฃ๋ก ๋ฐ๊ธ๋ฐ์ ์ ์๋ Letโs Encrypt๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Nest ์๋ฒ์์ ์ง์ SSL ์ธ์ฆ์๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ์ฝ๋ ์์ ์ด ๋ถ๊ฐํผํฉ๋๋ค. ๋ฐ๋ฉด ์น ์๋ฒ๋ฅผ Reverse Proxy๋ก ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ SSL ๊ตฌ์ฑ์ ์๋ฃํ ์ ์์ต๋๋ค. ๋ํ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋์ SSL ๊ด๋ จ ํก๋จ ๊ด์ฌ์ฌ ์ฝ๋๊ฐ ์กด์ฌํ์ง ์์, ๋์ฑ ํต์ฌ์ ์ง์คํ ์ ์์ต๋๋ค.
AWS SES (Simple Email Service)
traveline์ ์๋ก์ด IP๋ก ๋ก๊ทธ์ธ ์ ๋ณธ์ธ ํ์ธ ๋ฉ์ผ์ ์ ์กํ๋ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
Nest ๋ด์ฅ ๋ชจ๋์ธ nodemailer๋ ๋ณด์์ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์ด ์ค์๋น์ค์์๋ ์ฌ์ฉ๋์ง ์์ต๋๋ค. NCP์ Cloud Outbound Mailer๋ ์ด๋ทฐ์ง ๋ฌธ์ ๋ก ์ธํด ํ์ฌ (2023.12) ์๋น์ค ์ ์ฒญ์ด ๋งํ ์์ต๋๋ค. ์ด์, AWS SES๋ฅผ ์ฌ์ฉํ์ต๋๋ค.