๐๏ธ Architecture
[๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 10์ฅ ์๋ฆผ ์์คํ ์ค๊ณ
GroovyArea
2023. 3. 18. 23:01
์๋ฆผ ์์คํ
์ ์ด๋ ์๋น์ค๋ ํญ์ ๊ณ ๋ฏผํ๊ฒ ๋๋ ๋ถ๋ถ์ด๋ผ ์๊ฐํ๋ค.
์ค์ ๋ก ์๋น์ค๋ฅผ ๊ตฌํํ ๋, ๋ค์ํ ๊ณ ๋ฏผ๋ค์ ํ๊ฒ ๋๋๋ฐ, ์ค๊ณ์ ๋ํ ์ด์ ์์ ๋ฐ๋ผ๋ณธ ๊ฑด ์๋ก์ ๋ค.
์๋ฆผ ์์คํ
- ๊ณ ๊ฐ์๊ฒ ์ค์ํ ๋งํ ์ ๋ณด๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ ์ก
- ๋ชจ๋ฐ์ผ ํธ์ ์๋ฆผ, SMS ๋ฉ์์ง, ์ด๋ฉ์ผ ์ธ ๊ฐ์ง๋ก ๋ถ๋ฅ
1๋จ๊ณ : ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์
- ์์คํ
์ด ์ง์ํ๋ ์๋ฆผ ์ข
๋ฅ
- ํธ์ ์๋ฆผ, SMS ๋ฉ์์ง, ์ด๋ฉ์ผ
- ์ค์๊ฐ ์์คํ
์ฌ๋ถ
- ์ฐ์ฑ ์ค์๊ฐ ์์คํ ์ด๋ผ๊ณ ๊ฐ์ (์์คํ ๋ถํ ์ ์ฝ๊ฐ์ ์ง์ฐ ๋ฌด๋ฐฉ)
- ์ง์ํด์ผ ํ๋ ์ข
๋ฅ์ ๋จ๋ง
- iOS, ์๋๋ก์ด๋, ๋ฉํฑ/๋ฐ์คํฌํฑ
- ์๋ฆผ์ ๋ง๋ค ์ ์๋ ์ฃผ์ฒด
- ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ or ์๋ฒ ์ธก์ ์ค์ผ์ค๋ง
- ์๋ฆผ์ ๋ฐ์ง ์๋๋ก ์ค์ ๋ ๊ฐ๋ฅํด์ผ ํจ
- ํ๋ฃจ์ ๋ณด๋ผ ์ ์์ด์ผ ํ๋ ์
- ์ฒ๋ง ๊ฑด์ ๋ชจ๋ฐ์ผ ํธ์ ์๋ฆผ, ๋ฐฑ๋ง ๊ฑด์ SMS ๋ฉ์์ง, 5๋ฐฑ๋ง ๊ฑด์ ์ด๋ฉ์ผ
2๋จ๊ณ : ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ
์๋ฆผ ์ ํ๋ณ ์ง์ ๋ฐฉ์
iOS ํธ์ ์๋ฆผ
- ์๋ฆผ ์ ๊ณต์
- ์๋ฆผ ์์ฒญ์ ๋ง๋ค์ด ์ ํ ํธ์ ์๋ฆผ ์๋น์ค(APNS)๋ก ๋ณด๋ด๋ ์ฃผ์ฒด
- ๋จ๋ง ํ ํฐ(๊ณ ์ ์๋ณ์), ํ์ด๋ก๋(์๋ฆผ ๋ด์ฉ์ ๋ด์ JSON ๋์ ๋๋ฆฌ) ๋ฐ์ดํฐ๊ฐ ํ์
- APNS
- ์ ํ์ด ์ ๊ณตํ๋ ์๊ฒฉ ์๋น์ค
- ํธ์ ์๋ฆผ์ iOS ์ฅ์น๋ก ๋ณด๋ด๋ ์ญํ ์ ๋ด๋น
- iOS ๋จ๋ง
- ํธ์ ์๋ฆผ์ ์์ ํ๋ ์ฌ์ฉ์ ๋จ๋ง
์๋๋ก์ด๋ ํธ์ ์๋ฆผ
- iOS ์ ๋น์ทํ ์ ์ฐจ์ด๋ฉฐ APNS ๋์ FCM(Firebase Cloud Messaging)์ ์ฌ์ฉํ๋ ์ ์ด ๋ค๋ฆ
SMS ๋ฉ์์ง
- ๋ณดํต ํธ์๋ฆฌ์ค, ๋ฅ์ค๋ชจ ๊ฐ์ ์ 3 ์ฌ์
์์ ์๋น์ค๋ฅผ ๋ง์ด ์ด์ฉ
- ์ฌ์ฉ ์๋น์ค๋ผ ์ด์ฉ์๊ธ ํ์
์ด๋ฉ์ผ
- ๋๋ถ๋ถ์ ํ์ฌ๊ฐ ๊ณ ์ ์ด๋ฉ์ผ ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์ ์์ง๋ง ์ฌ์ฉ ์ด๋ฉ์ผ ์๋น์ค ๋ง์ด ์ด์ฉ
- ์ผ๋๊ทธ๋ฆฌ๋, ๋ฉ์ผ์นจํ ๋ฑ (๋์ ์ ์ก ์ฑ๊ณต๋ฅ , ๋ฐ์ดํฐ ๋ถ์ ์๋น์ค)
์ฐ๋ฝ์ฒ ์ ๋ณด ์์ง ์ ์ฐจ
- ์ฌ์ฉ์๊ฐ ์ฑ ์ค์น, ๊ณ์ ๋ฑ๋ก ๋ฑ์ ํ๋ฉด API ์๋ฒ๋ ํด๋น ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅ
- ์ด๋ฉ์ผ ์ฃผ์์ ์ ํ๋ฒํธ๋ user ํ ์ด๋ธ์ ์ ์ฅ
- ๋จ๋ง ํ ํฐ์ device ํ ์ด๋ธ์ ์ ์ฅ (ํ ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋จ๋ง์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก)
์๋ฆผ ์ ์ก ๋ฐ ์์ ์ ์ฐจ
๊ฐ๋ต์ ์ค๊ณ์ (์ด์)
- 1๋ถํฐ N๊น์ง์ ์๋น์ค
- ์๋น์ค ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค, ํฌ๋ก ์ก, ๋ถ์ฐ ์์คํ ์ปดํฌ๋ํธ ๋ฑ ์ผ ์ ์์
- ์๋ฆผ ์์คํ
- ์๋ฆผ ์ ์ก/์์ ์ฒ๋ฆฌ์ ํต์ฌ
- ์ด์ ์ค๊ณ์์์ 1๊ฐ ์๋ฒ๋ง ์ฌ์ฉํ๋ ์์คํ ์ผ๋ก ๊ฐ์
- ์ 3์ ์๋น์ค
- ์ฌ์ฉ์์๊ฒ ์๋ฆผ์ ์ค์ ๋ก ์ ๋ฌํ๋ ์ญํ
- ํตํฉ ์งํ ์ ํ์ฅ์ฑ์ ์ ์ํด์ผ ํจ (์๋ก์ด ์๋น์ค ํตํฉ or ๊ธฐ์กด ์๋น์ค ์ ๊ฑฐ ๋ฑ๋ฑ ...)
- ์ฌ์ฉ์๋ ์๊ธฐ ๋จ๋ง์์ ์๋ฆผ์ ์์
- ์ด์ ์ค๊ณ์์ ๋ช ๊ฐ์ง ๋ฌธ์
- SPOF (์๋ฆผ ์๋น์ค์ ์๋ฒ๊ฐ ํ๋๋ฐ์ ์์ผ๋ฏ๋ก)
- ๊ท๋ชจ ํ์ฅ์ฑ (ํ ๋ ์๋ฒ์ด๋ฏ๋ก)
- ์ฑ๋ฅ ๋ณ๋ชฉ (์๋ฆผ์ ์ฒ๋ฆฌํ๊ณ ๋ณด๋ด๋ ๊ฒ์ ์์์ ๋ง์ด ํ์๋ก ํจ, ์์คํ ๊ณผ๋ถํ ์ํ์ ๋น ์ง ์๋ ์์)
๊ฐ๋ต์ ์ค๊ณ์ (๊ฐ์ ๋ ๋ฒ์ )
- ๊ฐ์ ๋ฐฉํฅ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์๋ฅผ ์๋ฆผ ์์คํ ์ ์ฃผ ์๋ฒ์์ ๋ถ๋ฆฌ
- ์๋ฆผ ์๋ฒ๋ฅผ ์ฆ์คํ๊ณ ์๋์ผ๋ก ์ํ์ ๊ท๋ชจ ํ์ฅ์ด ์ด๋ฃจ์ด์ง ์ ์๋๋ก ํจ
- ๋ฉ์์ง ํ๋ฅผ ์ด์ฉํด ์์คํ ์ปดํฌ๋ํธ ์ฌ์ด์ ๊ฐํ ๊ฒฐํฉ์ ๋์
- ์๋ฆผ ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ
- ์๋ฆผ ์ ์ก API (์ฌ๋ด ์๋น์ค, ์ธ์ฆ๋ ํด๋ผ์ด์ธํธ)
- ์๋ฆผ ๊ฒ์ฆ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์บ์ ์ง์
- ์๋ฆผ ์ ์ก (๋ฉ์์ง ํ์ ์๋ฆผ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์)
- ์บ์
- ์ฌ์ฉ์ ์ ๋ณด, ๋จ๋ง ์ ๋ณด, ์๋ฆผ ํ ํ๋ฆฟ ๋ฑ์ ์บ์ ํจ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค (DB)
- ์ฌ์ฉ์, ์๋ฆผ, ์ค์ ๋ฑ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ์ฅ
- ๋ฉ์์ง ํ
- ์์คํ ์ปดํฌ๋ํธ ๊ฐ ์์กด์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์ฉ
- ๋ค๋์ ์๋ฆผ์ด ์ ์ก๋์ด์ผ ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ๋ฒํผ ์ญํ ๋ ์ํ
- ์๋ฆผ์ ์ข ๋ฅ๋ณ๋ก ๋ณ๋ ๋ฉ์์ง ํ๋ฅผ ์ฌ์ฉ
- ์์
์๋ฒ
- ๋ฉ์์ง ํ์์ ์ ์กํ ์๋ฆผ์ ๊บผ๋ด์ ์ 3์ ์๋น์ค๋ก ์ ๋ฌํ๋ ์ญํ ์ ๋ด๋นํ๋ ์๋ฒ
- ์๋ฆผ ์ ์ก ๊ณผ์
- API๋ฅผ ํธ์ถํ์ฌ ์๋ฆผ ์๋ฒ๋ก ์๋ฆผ์ ๋ณด๋
- ์๋ฆผ ์๋ฒ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์บ์๋ DB์์ ๊ฐ์ ธ์ด
- ์๋ฆผ ์๋ฒ๋ ์ ์กํ ์๋ฆผ์ ๋ง๋ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค์ด์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ํ ํ์ ๋ฃ์
- ์์ ์๋ฒ๋ ๋ฉ์์ง ํ์์ ์๋ฆผ ์ด๋ฒคํธ๋ฅผ ๊บผ๋
- ์์ ์๋ฒ๋ ์๋ฆผ์ ์ 3์ ์๋น์ค๋ก ๋ณด๋
- ์ 3์ ์๋น์ค๋ ์ฌ์ฉ์ ๋จ๋ง๋ก ์๋ฆผ์ ์ ์ก
3๋จ๊ณ : ์์ธ ์ค๊ณ
์์ ์ฑ
๋ฐ์ดํฐ ์์ค ๋ฐฉ์ง
- ์ด๋ค ์ํฉ์์๋ ์๋ฆผ์ด ์์ค๋๋ฉด ์ ๋จ
- ์ง์ฐ์ด๋ ์์๊ฐ ํ๋ฆฌ๋ ๊ฒ๋ณด๋ค ์ฌ๊ฐํจ
- ์๋ฆผ ๋ฐ์ดํฐ๋ฅผ DB์ ๋ณด๊ณ ํ๊ณ ์ฌ์๋ ๋ฉ์ปค๋์ฆ ๊ตฌํ ํ์
์๋ฆผ ์ค๋ณต ์ ์ก ๋ฐฉ์ง
- ์์ ํ ๋ง๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ
- ์ค๋ณต์ ํ์งํ๋ ๋ฉ์ปค๋์ฆ ๋์
- ์ค๋ฅ๋ฅผ ์ ์คํ ์ฒ๋ฆฌ
- ๋ณด๋ด์ผ ํ ์๋ฆผ์ ์ด๋ฒคํธ ID๋ฅผ ๊ฒ์ฌํ์ฌ ๋ณธ ์ ์ด ์๋ ์ด๋ฒคํธ์ธ์ง ์ดํด๋ด
์ถ๊ฐ๋ก ํ์ํ ์ปดํฌ๋ํธ ๋ฐ ๊ณ ๋ ค ์ฌํญ
์๋ฆผ ํ ํ๋ฆฟ
- ์๋ฆผ์ ์ ์ฌ์ฑ์ ๊ณ ๋ คํ์ฌ ์๋ฆผ ๋ฉ์์ง์ ๋ชจ๋ ๋ถ๋ถ์ ๋ค์ ๋ง๋ค ํ์๋ฅผ ๋์ด์ค
- ์ธ์, ์คํ์ผ, ์ถ์ ๋งํฌ๋ฅผ ์กฐ์ ํ์ฌ ์๋ฆผ์ ๋ง๋ค์ด ๋ด๋ ํ
- ์ผ๊ด์ฑ ์ ์ง ๋ฐ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์๋ฆผ ์์ฑ ์๊ฐ ๊ฐ์
์๋ฆผ ์ค์
- ์๋ฆผ ์ค์ ํ ์ด๋ธ์ ๋ณด๊ด
- user id, channel, ํด๋น ์ฑ๋๋ก ์๋ฆผ์ ๋ฐ์ ๊ฒ์ธ์ง ๋ฑ์ ์ ๋ณด ์ ์ฅ
- ํน์ ์ข ๋ฅ์ ์๋ฆผ์ ๋ณด๋ด๊ธฐ ์ ์ ํด๋น ์ ๋ณด๋ฅผ ์กฐํ
์ ์ก๋ฅ ์ ํ
- ํ ์ฌ์ฉ์๊ฐ ๋ฐ์ ์ ์๋ ์๋ฆผ์ ๋น๋ ์ ํ
- ์๋ฆผ์ ๋๋ฌด ๋ง์ด ๋ณด๋ด๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์๋ฆผ์ ๋ ์ ์์ผ๋ฏ๋ก ์ ํ
์ฌ์๋ ๋ฐฉ๋ฒ
- ์๋ฆผ ์ ์ก์ ์คํจ ์ ํด๋น ์๋ฆผ์ ์ฌ์๋ ์ ์ฉ ํ์ ๋ฃ์
- ๊ฐ์ ๋ฌธ์ ๊ฐ ๊ณ์ํด์ ๋ฐ์ํ๋ฉด ๊ฐ๋ฐ์์๊ฒ ํต์ง
ํธ์ ์๋ฆผ๊ณผ ๋ณด์
- iOS์ ์๋๋ก์ด๋ ์ฑ์ ๊ฒฝ์ฐ ์๋ฆผ ์ ์ก API๋ appKey์ appSecret์ ์ฌ์ฉํ์ฌ ๋ณด์ ์ ์ง
- ์ธ์ฆ๋๊ฑฐ๋ ์น์ธ๋ ํด๋ผ์ด์ธํธ๋ง ์๋ฆผ์ ๋ณด๋ผ ์ ์์
ํ ๋ชจ๋ํฐ๋ง
- ํ์ ์์ธ ์๋ฆผ์ ๊ฐ์๋ ์๋ฆผ ์์คํ ๋ชจ๋ํฐ๋ง์ ์ค์ํ ๋ฉํธ๋ฆญ
- ์ด ์๊ฐ ๋๋ฌด ํฌ๋ฉด ์์ ์๋ฒ๋ค์ด ์ด๋ฒคํธ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํ ๊ฒ -> ์๋ฒ ์ฆ์ค ํ์
์ด๋ฒคํธ ์ถ์
- ์๋ฆผ ํ์ธ์จ, ํด๋ฆญ๋ฅ , ์ค์ ์ฑ ์ฌ์ฉ ๋ฑ์ ๋น์จ ๊ฐ์ ๋ฉํธ๋ฆญ์ ์ฌ์ฉ์๋ฅผ ์ดํดํ๋๋ฐ ์ค์
- ๋ณดํต์ ์๋ฆผ ์์คํ ์ ๋ฐ์ดํฐ ๋ถ์ ์๋น์ค์๋ ํตํฉํด์ผ๋ง ํจ
์์ ๋ ์ค๊ณ์
- ์๋ฆผ ์๋ฒ์ ์ธ์ฆ๊ณผ ์ ์ก๋ฅ ์ ํ ๊ธฐ๋ฅ ์ถ๊ฐ
- ์ ์ก ์คํจ์ ๋์ํ๊ธฐ ์ํ ์ฌ์๋ ๊ธฐ๋ฅ๋ ์ถ๊ฐ (๋ค์ ํ์ ๋ฃ๊ณ ์ง์ ๋ ํ์๋งํผ ์ฌ์๋)
- ์ ์ก ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์๋ฆผ ์์ฑ ๊ณผ์ ์ ๋จ์ํํ๊ณ ์๋ฆผ ๋ด์ฉ์ ์ผ๊ด์ฑ์ ์ ์ง
- ๋ชจ๋ํฐ๋ง๊ณผ ์ถ์ ์์คํ ์ ์ถ๊ฐ
4๋จ๊ณ : ๋ง๋ฌด๋ฆฌ
- ์๋ฆผ ํ์๋ถ๊ฐ๊ฒฐํ ๊ธฐ๋ฅ
- ๋ฉ์์ง ํ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์์คํ ์ปดํฌ๋ํธ ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ๊ฒ
- ์ต์ ํ ๊ธฐ๋ฒ
- ์์ ์ฑ
- ๋ณด์
- ์ด๋ฒคํธ ์ถ์ ๋ฐ ๋ชจ๋ํฐ๋ง
- ์ฌ์ฉ์ ์ค์
- ์ ์ก๋ฅ ์ ํ
๋ฐ์ํ