๐Ÿ”ฅ TIL - Day 12

Kim Dae Hyunยท2021๋…„ 9์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
13/93

๐Ÿ“Œ ํ˜‘์—… ํ”„๋กœ์ ํŠธ 3์ผ์ฐจ ๊ตฌํ˜„ ์ด์Šˆ

์กฐํšŒ์ˆ˜ ์ˆœ์œ„ API ๊ตฌํ˜„
๋ฒ•์•ˆ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์•„์ดํ…œ์ด ํด๋ฆญ๋  ๋•Œ ํ•ด๋‹น ์•„์ดํ…œ์ด DB์— ์žˆ๋‹ค๋ฉด count๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์—†๋‹ค๋ฉด ํ•ด๋‹น ์•„์ดํ…œ์„ DB์— ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  count๋ฅผ 1๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. ์กฐํšŒ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋Š” API๋Š” ๋ง‰ํž˜์—†์ด ์ž˜ ๊ตฌํ˜„๋˜์—ˆ์ง€๋งŒ ์ˆœ์œ„๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๋ถ€๋ถ„์—์„œ ํ•œ์ฐธ ๊ตฌ๊ธ€๋ง์ด ํ•„์š”ํ–ˆ๋‹ค..

5์œ„๊นŒ์ง€์˜ ์ˆœ์œ„๋ฅผ ๋ฐ›์•„์˜จ๋‹ค๋ฉด count๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  5๊ฐœ๋งŒ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜๋ฉด ๋œ๋‹ค. mongoDB๋ฅผ ๋ณ„๋กœ ๋‹ค๋ค„๋ณด์ง„ ์•Š์•˜์ง€๋งŒ ์กฐ๊ธˆ ๊ฒฝํ—˜์— ์˜ํ•ด์„œ ์ง๊ด€์ ์œผ๋กœ ์ง  ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค..

rank_list = db.ranking.find().sort({'count':-1}).limit(5)

๊ฑฐ์˜ ๋”•์…”๋„ˆ๋ฆฌ ํƒ€์ž…์œผ๋กœ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋‹น์—ฐํžˆ ์ •๋ ฌ์กฐ๊ฑด๋„ {'ํ•„๋“œ์ด๋ฆ„': ์กฐ๊ฑด}์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์‚ฌ์‹ค ์—๋Ÿฌ์— ๋Œ€ํ•ด ์ •ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ์ฐพ์•˜๋‹ค..

rank_list = db.ranking.find({}).sort([('count',-1)]).limit(5)

sort([('์ด๋ฆ„':์กฐ๊ฑด)]) ... ์ •๋ ฌ ์กฐ๊ฑด์„ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ํŠœํ”Œ๋กœ ๋ฐ›๋Š”๋‹ค.. ๊ต‰์žฅํžˆ ์ƒ์†Œํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ DB์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋กœ ์‘๋‹ต์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ž˜ ๋‚ด๋ ค์ฃผ์—ˆ๋‹ค.

 rank_result = []

    for idx, rank in enumerate(rank_list):
        doc = {
            'rank':idx+1,
            'title':rank['title'],
            'count':rank['count']
        }
        rank_result.append(doc)

๐Ÿ“Œ AWS CloudFront

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ์žˆ์ง€๋งŒ ์ด๋ฒˆ ์บ ํ”„์—์„œ ์–ป๊ณ ์ž ํ•˜๋Š” ๋ฌด๊ธฐ ์ค‘ ํ•˜๋‚˜์ธ ์ธํ”„๋ผ ๊ธฐ์ˆ ๋„ ํ‹ˆํ‹ˆํžˆ ๊ณต๋ถ€ํ–ˆ๋‹ค.

CloudFront๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
AWS๋Š” ์„ธ๊ณ„์ ์œผ๋กœ ๋งŽ์€ region์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
๋‚ด๊ฐ€ ๋Œ€ํ•œ๋ฏผ๊ตญ region์—์„œ S3 ๋ฒ„ํ‚ท์„ ํ†ตํ•ด ์ •์  ๋ฆฌ์†Œ์Šค๋“ค์„ ํ˜ธ์ŠคํŒ…ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.
๋‚ด S3 ๋ฒ„ํ‚ท์— ๋ฏธ๊ตญ์— ์žˆ๋Š” region์—์„œ ์ ‘๊ทผํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹น์—ฐํžˆ ๊ฑฐ๋ฆฌ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ๊ฒƒ์ด๋‹ค.
์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด CloudFront๋Š” region๊ฐ„ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์‹œ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

CloudFront CDN (Contents Delivery Network)

  • ๋‹ค๋ฅธ region์— edge location(์บ์‹ฑ์„œ๋ฒ„)๋ฅผ ๋‘๊ณ  ๋‹ค๋ฅธ region๋“ค์ด ์šฐ๋ฆฌ์˜ S3๋ฒ„ํ‚ท์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ  edge location์—์„œ ์ •์ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

S3๋ฒ„ํ‚ท๊ณผ CloudFront ์ƒ์„ฑ ๋ฐ ์—ฐ๋™

  • Create Distribution - Get Started
  • Original Domain Name: ์—ฐ๋™ํ•  S3 ๋ฒ„ํ‚ท์˜ ๋„๋ฉ”์ธ์„ ์„ ํƒ
  • ์ƒ์„ฑ ๋ฐ ์—ฐ๋™์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์ œ S3๋ฒ„ํ‚ท์˜ ๋„๋ฉ”์ธ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  CloudFront์˜ ๋„๋ฉ”์ธ์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค.
  • AccesDenied ๋ฐœ์ƒ์‹œ
    • Default Root Object ์„ค์ •: index.html
    • CloudFront ๋„๋ฉ”์ธ์˜ root ๊ฒฝ๋กค ์ ‘๊ทผํ–ˆ์„ ๋•Œ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” S3 ๋ฒ„ํ‚ท์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ถ”์„ ์—ฐํœด๋กœ ๋Š˜์–ด์ง„ ์ •์‹ ์„ ๋ถ€์—ฌ์žก๊ณ  ์ด๋ฒˆ ์ฃผ๋„ ์ž˜ํ–ˆ๋‹ค!

profile
์ข€ ๋” ์ฒœ์ฒœํžˆ ๊นŒ๋จน๊ธฐ ์œ„ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿง

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