๐Ÿ““ 10์žฅ. ์•Œ๋ฆผ ์‹œ์Šคํ…œ ์„ค๊ณ„

onyยท2022๋…„ 12์›” 9์ผ
1

๐Ÿ“š book

๋ชฉ๋ก ๋ณด๊ธฐ
4/10

1๋‹จ๊ณ„. ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •

  1. ์•Œ๋ฆผ ์ข…๋ฅ˜: ํ‘ธ์‹œ ์•Œ๋ฆผ, SMS ๋ฉ”์„ธ์ง€, ์ด๋ฉ”์ผ
  2. ์—ฐ์„ฑ ์‹ค์‹œ๊ฐ„(soft real-time) ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๊ฐ€์ •
  3. IOS, ์•ˆ๋“œ๋กœ์ด๋“œ(android) ๋‹จ๋ง, ๊ทธ๋ฆฌ๊ณ  ๋žฉํ†ฑ/๋ฐ์Šคํฌํ†ฑ์„ ์ง€์›ํ•ด์•ผ ํ•จ.
  4. ์•Œ๋ฆผ: ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋งŒ๋“ค์ˆ˜๋„ ์žˆ๊ณ , ์„œ๋ฒ„์—์„œ ์Šค์ผ€์ค„๋ง ํ• ์ˆ˜๋„.
  5. ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ๋ฆผ ๋„๊ธฐ๋„ ๊ฐ€๋Šฅํ•ด์•ผํ•จ.
  6. ํ•˜๋ฃจ์— ์ฒœ๋งŒ ๊ฑด ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ ์•Œ๋ฆผ, ๋ฐฑ๋งŒ ๊ฑด์˜ SMS ๋ฉ”์„ธ์ง€, 5๋ฐฑ๋งŒ ๊ฑด์˜ ์ด๋ฉ”์ผ

2๋‹จ๊ณ„. ๊ฐœ๋žต์  ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ

์•Œ๋ฆผ ์œ ํ˜•๋ณ„ ์ง€์› ๋ฐฉ์•ˆ

1. IOS ํ‘ธ์‹œ ์•Œ๋ฆผ

  1. ์•Œ๋ฆผ ์ œ๊ณต์ž(provider)
    ์•Œ๋ฆผ ์š”์ฒญ(notification request)์„ ๋งŒ๋“ค์–ด ์• ํ”Œ ํ‘ธ์‹œ ์•Œ๋ฆผ ์„œ๋น„์Šค(APNS)๋กœ ๋ณด๋‚ด๋Š” ์ฃผ์ฒด

    ์•Œ๋ฆผ ์š”์ฒญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”...
    ๋‹จ๋ง ํ† ํฐ(device token): ์•Œ๋ฆผ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ณ ์œ  ์‹๋ณ„์ž
    ํŽ˜์ด๋กœ๋“œ(payload): ์•Œ๋ฆผ ๋‚ด์šฉ์„ ๋‹ด์€ JSON ๋”•์…”๋„ˆ๋ฆฌ(dictionary)
    ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  2. APNS
    ์• ํ”Œ์ด ์ œ๊ณตํ•˜๋Š” ์›๊ฒฉ ์„œ๋น„์Šค. ํ‘ธ์‹œ ์•Œ๋ฆผ์„ iOS ์žฅ์น˜๋กœ ๋ณด๋‚ด๋Š” ์—ญํ• 

  3. iOS ๋‹จ๋ง(iOS device)
    ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ์ˆ˜์‹ ํ•˜๋Š” ์‚ฌ์šฉ์ž ๋‹จ๋ง

2. ์•ˆ๋“œ๋กœ์ด๋“œ ํ‘ธ์‹œ ์•Œ๋ฆผ
๋น„์Šทํ•œ ์ ˆ์ฐจ๋กœ ์ „์†ก. APNS ๋Œ€์‹  FCM(Firebase Cloud Messaging)์„ ์‚ฌ์šฉ.

3. SMS ๋ฉ”์„ธ์ง€
ํŠธ์œŒ๋ฆฌ์˜ค(Twilio), ๋„ฅ์Šค๋ชจ(Nexmo) ๊ฐ™์€ ์ œ 3 ์‚ฌ์—…์ž ์„œ๋น„์Šค๋ฅผ ๋งŽ์ด ์ด์šฉ - ๋‹น์—ฐ ์œ ๋ฃŒ

4. ์ด๋ฉ”์ผ
๋ณดํ†ต ์ƒ์šฉ ์ด๋ฉ”์ผ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ์ƒŒ๋“œ๊ทธ๋ฆฌ๋“œ(Sendgrid), ๋ฉ”์ผ์นจํ”„(Mailchimp)๋ฅผ ๋งŽ์ด ์‚ฌ์šฉ.
์ „์†ก ์„ฑ๊ณต๋ฅ ๋„ ๋†’๊ณ , ๋ฐ์ดํ„ฐ ๋ถ„์„ ์„œ๋น„์Šค(analytics)๋„ ์ œ๊ณต.

์š”์•ฝ

์—ฐ๋ฝ์ฒ˜ ์ •๋ณด ์ˆ˜์ง‘ ์ ˆ์ฐจ


์•ฑ ์„ค์น˜ ํ˜น์€ ๊ณ„์ • ๋“ฑ๋ก ์‹œ api ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ DB์— ์ €์žฅ

์•Œ๋ฆผ ์ „์†ก ๋ฐ ์ˆ˜์‹  ์ ˆ์ฐจ

์ดˆ์•ˆ: ๊ฐœ๋žต์  ์„ค๊ณ„์•ˆ

์ด ์„ค๊ณ„์˜ ๋ฌธ์ œ์ 
1. SPOF(Single-Point-Of-Failure): ๋‹จ์ผ ์„œ๋ฒ„ - ํ•˜๋‚˜ ๊ณ ์žฅ๋‚˜๋ฉด ์ „์ฒด ์žฅ์• ๋กœ ์ด์–ด์ง
2. ๊ทœ๋ชจ ํ™•์žฅ์„ฑ: ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹จ์ผ ์„œ๋ฒ„ - DB๋‚˜ Cache ๋“ฑ ์ค‘์š”ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ทœ๋ชจ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋Š˜๋ฆด ๋ฐฉ๋ฒ•์ด ์—†์Œ
3. ์„ฑ๋Šฅ ๋ณ‘๋ชฉ: ๋‹จ์ผ ์„œ๋ฒ„ - ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ฆฌ๋Š” ์‹œ๊ฐ„์—๋Š” ์‹œ์Šคํ…œ ๊ณผ๋ถ€ํ•˜ ์šฐ๋ ค

๊ฐœ์„ ๋œ ๋ฒ„์ „: ๊ฐœ๋žต์  ์„ค๊ณ„์•ˆ

๊ฐœ์„  ๋ฐฉํ–ฅ

  1. DB์™€ Cahce๋ฅผ ์•Œ๋ฆผ ์‹œ์Šคํ…œ์˜ ์ฃผ ์„œ๋ฒ„์—์„œ ๋ถ„๋ฆฌ
  2. ์•Œ๋ฆผ ์„œ๋ฒ„๋ฅผ ์ฆ์„คํ•˜๊ณ  ์ž๋™์œผ๋กœ ์ˆ˜ํ‰์  ๊ทœ๋ชจ ํ™•์žฅ์ด ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก...
  3. ๋ฉ”์„ธ์ง€ ํ๋ฅผ ์ด์šฉํ•ด ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ๋Š์ž

  1. ์•Œ๋ฆผ ์„œ๋ฒ„(notification server)์˜ ๊ธฐ๋Šฅ
    ์•Œ๋ฆผ ์ „์†ก API: ์ŠคํŒธ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋ณดํ†ต ์‚ฌ๋‚ด ์„œ๋น„์Šค ๋˜๋Š” ์ธ์ฆ๋œ ํด๋ผ์ด์–ธํŠธ๋งŒ ์ด์šฉ ๊ฐ€๋Šฅ
    ์•Œ๋ฆผ ๊ฒ€์ฆ(validation): ์ด๋ฉ”์ผ ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์  ๊ฒ€์ฆ ์ˆ˜ํ–‰
    DB ๋˜๋Š” Cache ์งˆ์˜: ์•Œ๋ฆผ์— ํฌํ•จ์‹œํ‚ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ
    ์•Œ๋ฆผ ์ „์†ก: ์•Œ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”์„ธ์ง€ ํ์— ๋„ฃ์Œ. ๋ณ‘๋ ฌ์  ์•Œ๋ฆผ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ.

์ •๋ฆฌ

  1. API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์•Œ๋ฆผ ์„œ๋ฒ„๋กœ ์•Œ๋ฆผ์„ ๋ณด๋ƒ„
  2. ์•Œ๋ฆผ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด, ๋‹จ๋ง ํ† ํฐ, ์•Œ๋ฆผ ์„ค์ • ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(metadata)๋ฅผ ์บ์‹œ๋‚˜ DB์—์„œ ๊ฐ€์ ธ์˜ด
  3. ์•Œ๋ฆผ ์„œ๋ฒ„๋Š” ์ „์†กํ•  ์•Œ๋ฆผ์— ๋งž๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ํ•œ ํ์— ๋„ฃ๋Š”๋‹ค.
  4. ์ž‘์—… ์„œ๋ฒ„๋Š” ๋ฉ”์„ธ์ง€ ํ์—์„œ ์•Œ๋ฆผ ์ด๋ฒคํŠธ๋ฅผ ๊บผ๋ƒ„
  5. ์ž‘์—… ์„œ๋ฒ„๋Š” ์•Œ๋ฆผ์„ ์ œ3์ž ์„œ๋น„์Šค๋กœ ๋ณด๋ƒ„
  6. ์ œ3์ž ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž ๋‹จ๋ง๋กœ ์•Œ๋ฆผ์„ ์ „์†กํ•จ

3๋‹จ๊ณ„. ์ƒ์„ธ ์„ค๊ณ„

์•ˆ์ •์„ฑ(reliability)

๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€

์•Œ๋ฆผ ์ค‘๋ณต ์ „์†ก ๋ฐฉ์ง€

๊ฐ„๋‹จํ•œ ์ค‘๋ณต ๋ฐฉ์ง€ ๋กœ์ง์˜ ์‚ฌ๋ก€
: ๋ณด๋‚ด์•ผ ํ•  ์•Œ๋ฆผ์ด ๋„์ฐฉํ•˜๋ฉด ๊ทธ ์ด๋ฒคํŠธ ID๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ด์ „์— ๋ณธ ์ ์ด ์žˆ๋Š” ์ด๋ฒคํŠธ์ธ์ง€ ์‚ดํ•€๋‹ค. ์ค‘๋ณต๋œ ์ด๋ฒคํŠธ๋ผ๋ฉด ๋ฒ„๋ฆฌ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•Œ๋ฆผ ๋ฐœ์†ก

์ค‘๋ณต ์ „์†ก์„ 100% ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด์œ 

์ถ”๊ฐ€๋กœ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๊ณ ๋ ค์‚ฌํ•ญ

์•Œ๋ฆผ ํ…œํ”Œ๋ฆฟ, ์•Œ๋ฆผ ์„ค์ •, ์ด๋ฒคํŠธ ์ถ”์ , ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง, ์ฒ˜๋ฆฌ์œจ ์ œํ•œ ๋“ฑ...

๊ฐœ์„ ๋œ ์„ค๊ณ„์•ˆ


์ง์ง์ง ๐Ÿ‘

profile
ํŒŒ์ด(ฯ€)ํ˜• ๊ฐœ๋ฐœ์ž ๐ŸŽ๐ŸŒฟ๐Ÿค

0๊ฐœ์˜ ๋Œ“๊ธ€