λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT/Aws

AWS Lambda와 API Gateway μ„œλ²„λ¦¬μŠ€ μ™„λ²½ κ°€μ΄λ“œ: μ„œλ²„ 없이 λ°±μ—”λ“œ κ΅¬μΆ•ν•˜κΈ°

by Full~ day πŸ˜€ 2026. 9. 1.
728x90
λ°˜μ‘ν˜•

"μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈμ— λ°±μ—”λ“œκ°€ ν•„μš”ν•΄μ„œ AWS EC2λ₯Ό λ„μ› λŠ”λ°, 아무도 접속 μ•ˆ ν•˜λŠ” μƒˆλ²½μ—λ„ 맀달 2만 원씩 μš”κΈˆμ΄ λ‚˜κ°€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이거 μ •μƒμΈκ°€μš”?"

μ•ˆλ…•ν•˜μ„Έμš”! ν΄λΌμš°λ“œ 인프라 μš”κΈˆ λ‹€μ΄μ–΄νŠΈμ™€ 효율적인 μ•„ν‚€ν…μ²˜ 섀계에 진심인 κ°œλ°œμžμž…λ‹ˆλ‹€.

μ£Όλ‹ˆμ–΄ κ°œλ°œμžλ‚˜ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ 개인 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•  λ•Œ κ°€μž₯ 큰 μž₯벽은 'λ°±μ—”λ“œ μ„œλ²„ μœ μ§€λΉ„'μž…λ‹ˆλ‹€. 24μ‹œκ°„ λ‚΄λ‚΄ μΌœλ‘μ–΄μ•Ό ν•˜λŠ” 기쑴의 μ„œλ²„ ν˜ΈμŠ€νŒ…(EC2 λ“±) 방식은 νŠΈλž˜ν”½μ΄ μ—†λŠ” μ‹œκ°„λŒ€μ—λ„ λΆˆν•„μš”ν•œ λΉ„μš©μ„ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μš”κΈˆ ν­νƒ„μ˜ 곡포와 μ„œλ²„ κ΄€λ¦¬μ˜ λ³΅μž‘ν•¨μ„ ν•œ λ²ˆμ— ν•΄κ²°ν•΄ μ£ΌλŠ” ν˜„λŒ€ ν΄λΌμš°λ“œμ˜ λ§ˆλ²•μ΄ λ°”λ‘œ 'μ„œλ²„λ¦¬μŠ€(Serverless)'μž…λ‹ˆλ‹€. κ·Έμ€‘μ—μ„œλ„ κ°€μž₯ λŒ€μ€‘μ μ΄κ³  κ°•λ ₯ν•œ 쑰합인 AWS Lambda와 API Gatewayλ₯Ό μ‚¬μš©ν•˜λ©΄, μ½”λ“œκ°€ μ‹€ν–‰λœ λ”± κ·Έ 0.1초의 μ°°λ‚˜μ—λ§Œ λΉ„μš©μ„ μ§€λΆˆν•˜λŠ” ν™˜μƒμ μΈ λ°±μ—”λ“œλ₯Ό ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.

이번 κΈ€μ—μ„œλŠ” μ„œλ²„λ¦¬μŠ€κ°€ λ„λŒ€μ²΄ 무엇인지 직관적인 λΉ„μœ λ‘œ μ•Œμ•„λ³΄κ³ , ν˜„μ—…μ—μ„œ 이 두 κ°€μ§€ μ„œλΉ„μŠ€λ₯Ό μ–΄λ–»κ²Œ κ²°ν•©ν•˜μ—¬ μƒμš© APIλ₯Ό λ§Œλ“œλŠ”μ§€, 그리고 λ°˜λ“œμ‹œ 마주치게 λ˜λŠ” 'μ½œλ“œ μŠ€νƒ€νŠΈ(Cold Start)' μ—λŸ¬ ν•΄κ²°λ²•κΉŒμ§€ 깊이 있게 νŒŒν—€μ³ λ³΄κ² μŠ΅λ‹ˆλ‹€.

1. μ„œλ²„λ¦¬μŠ€(Serverless)λž€? μ§„μ§œ μ„œλ²„κ°€ μ—†λŠ” 걸까?

μ„œλ²„λ¦¬μŠ€λΌλŠ” 단어λ₯Ό 처음 λ“€μœΌλ©΄ "μ„œλ²„κ°€ μ—†λŠ”λ° μ½”λ“œκ°€ μ–΄λ””μ„œ λŒμ•„κ°€μ§€?"λΌλŠ” 의문이 μƒκΉλ‹ˆλ‹€. κ²°λ‘ λΆ€ν„° λ§ν•˜μžλ©΄ μ„œλ²„λŠ” μ‘΄μž¬ν•˜μ§€λ§Œ, 개발자인 λ‚΄κ°€ 직접 μ„œλ²„λ₯Ό 관리할 ν•„μš”κ°€ μ—†λ‹€λŠ” λœ»μž…λ‹ˆλ‹€.

이λ₯Ό 'μžκ°€μš©(EC2)'κ³Ό 'νƒμ‹œ(Lambda)'에 λΉ„μœ ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

  • κΈ°μ‘΄ μ„œλ²„ (AWS EC2) = μžκ°€μš©:
  • μ°¨λ₯Ό 사면(μ„œλ²„ μž„λŒ€), λ‚΄κ°€ μš΄μ „μ„ μ•ˆ ν•˜κ³  μ£Όμ°¨μž₯에 μ„Έμ›Œλ§Œ 두어도 맀달 λ³΄ν—˜λ£Œμ™€ μ£Όμ°¨λΉ„(κ³ μ • μš”κΈˆ)κ°€ λ‚˜κ°‘λ‹ˆλ‹€. μ—”μ§„ μ˜€μΌλ„ 직접 κ°ˆμ•„μ•Ό ν•˜κ³ (OS μ—…λ°μ΄νŠΈ), μ†λ‹˜μ΄ λ§Žμ•„μ§€λ©΄ 더 큰 차둜 직접 λ°”κΏ”μ•Ό ν•©λ‹ˆλ‹€(μŠ€μΌ€μΌ μ—…).
  • μ„œλ²„λ¦¬μŠ€ (AWS Lambda) = νƒμ‹œ:
  • νƒμ‹œλŠ” μ°¨λ₯Ό μ†Œμœ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ μ΄λ™ν•˜κ³  싢을 λ•Œ(API μš”μ²­μ΄ λ“€μ–΄μ˜¬ λ•Œ) νƒμ‹œλ₯Ό λΆ€λ₯΄κ³ , λ”± λͺ©μ μ§€κΉŒμ§€ 달린 거리(μ½”λ“œ μ‹€ν–‰ μ‹œκ°„)만큼만 λ―Έν„°κΈ° μš”κΈˆμ„ μ§€λΆˆν•©λ‹ˆλ‹€. ν‰μ†Œμ—λŠ” μš”κΈˆμ΄ 0원이며, 차단기 κ³ μž₯μ΄λ‚˜ μ •λΉ„λŠ” νƒμ‹œ νšŒμ‚¬(AWS)κ°€ μ•Œμ•„μ„œ λ‹€ ν•΄μ€λ‹ˆλ‹€.

2. API Gateway와 Lambda의 ν™˜μƒμ μΈ μ½€λΉ„ (λ™μž‘ 원리)

νƒμ‹œ(Lambda)κ°€ μ€€λΉ„λ˜μ—ˆλ‹€λ©΄, μ†λ‹˜(ν΄λΌμ΄μ–ΈνŠΈ)의 ν˜ΈμΆœμ„ λ°›μ•„ νƒμ‹œλ₯Ό λ°°μ°¨ν•΄ 쀄 'μ½œνƒμ‹œ μ„Όν„°'κ°€ ν•„μš”ν•©λ‹ˆλ‹€. 이 역할을 ν•˜λŠ” 것이 λ°”λ‘œ Amazon API Gatewayμž…λ‹ˆλ‹€.

μ›Ήμ΄λ‚˜ μ•±μ—μ„œ [https://api.my-domain.com/users](https://api.my-domain.com/users) λΌλŠ” μ£Όμ†Œλ‘œ μ‚¬μš©μž 정보λ₯Ό 달라고 GET μš”μ²­μ„ 보내면, κ·Έ μš”μ²­μ€ 직접 Lambda둜 κ°€μ§€ μ•Šκ³  API Gatewayλ₯Ό 거치게 λ©λ‹ˆλ‹€.

[ν΄λΌμ΄μ–ΈνŠΈ λΈŒλΌμš°μ € / μ•±] 
         β”‚ 
    (HTTP GET /users μš”μ²­)
         β–Ό
[Amazon API Gateway (μ½œμ„Όν„° 직원)] 
         β”‚ "μ–΄? /users κ²½λ‘œλ„€? μ‚¬μš©μž 쑰회 λ‹΄λ‹Ή Lambdaλ₯Ό κΉ¨μ›ŒλΌ!"
         β–Ό
[AWS Lambda (μš”λ¦¬μ‚¬ / ν•¨μˆ˜)]
         β”‚ DB 쑰회 및 JSON 데이터 생성 ν›„ λ°˜ν™˜
         β–Ό
[ν΄λΌμ΄μ–ΈνŠΈ λΈŒλΌμš°μ € / μ•±] (κ²°κ³Ό μˆ˜μ‹ )

πŸ“Š API Gateway와 Lambda μ—­ν•  비ꡐ

μ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ μ—­ν•  λΉ„μœ μ  μ—­ν•  μ£Όμš” κΈ°λŠ₯ 및 νŠΉμ§•
API Gateway λ¬Έμ§€κΈ° & λΌμš°ν„° λ ˆμŠ€ν† λž‘ 홀 λ§€λ‹ˆμ € URL 경둜 λ§€ν•‘, νŠΈλž˜ν”½ μ œν•œ(Rate Limit), 인증 인가(CORS, JWT), νŒŒλΌλ―Έν„° 검증
AWS Lambda μ»΄ν“¨νŒ… μ—°μ‚° 처리 μ£Όλ°© μš”λ¦¬μ‚¬ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 μ‹€ν–‰, λ°μ΄ν„°λ² μ΄μŠ€ 연동, μ™ΈλΆ€ API 톡신 (μ΅œλŒ€ μ‹€ν–‰ μ‹œκ°„ 15λΆ„)

API Gatewayκ°€ μ•…μ„± νŠΈλž˜ν”½μ„ 막아주고 κΆŒν•œμ„ κ²€μ‚¬ν•œ λ’€, μ•ˆμ „ν•œ μš”μ²­λ§Œ Lambda둜 λ„˜κ²¨μ£ΌκΈ° λ•Œλ¬Έμ— λ°±μ—”λ“œ μ‹œμŠ€ν…œμ΄ 맀우 κ²¬κ³ ν•΄μ§‘λ‹ˆλ‹€.

3. ν˜„μ—… 싀무 μ‹œλ‚˜λ¦¬μ˜€: 'μ’‹μ•„μš”' 카운트 API λ§Œλ“€κΈ°

μ‹€μ œ μ œκ°€ ν”„λ‘ νŠΈμ—”λ“œ μœ„μ£Όμ˜ 포트폴리였 μ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€ λ•Œ, λ°±μ—”λ“œ μ„œλ²„ 없이 κ²Œμ‹œκΈ€μ˜ 'μ’‹μ•„μš”' λ²„νŠΌ κΈ°λŠ₯을 κ΅¬ν˜„ν–ˆλ˜ μ‹œλ‚˜λ¦¬μ˜€μž…λ‹ˆλ‹€.

Lambda ν•¨μˆ˜λŠ” Node.js, Python, Java λ“± λ‹€μ–‘ν•œ μ–Έμ–΄λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. μ•„λž˜λŠ” Node.jsλ₯Ό 기반으둜 ν•œ Lambda의 기본적인 μ½”λ“œ λΌˆλŒ€(Handler)μž…λ‹ˆλ‹€.

JavaScript
 
// index.mjs (AWS Lambda ν•Έλ“€λŸ¬ ν•¨μˆ˜)

export const handler = async (event, context) => {
    // 1. API Gatewayκ°€ λ„˜κ²¨μ€€ μš”μ²­(event)μ—μ„œ νŒŒλΌλ―Έν„°λ₯Ό κΊΌλƒ…λ‹ˆλ‹€.
    // 예: /likes?postId=123
    const postId = event.queryStringParameters?.postId;

    if (!postId) {
        return {
            statusCode: 400,
            body: JSON.stringify({ message: 'postIdκ°€ ν•„μš”ν•©λ‹ˆλ‹€.' }),
        };
    }

    try {
        // 2. λ°μ΄ν„°λ² μ΄μŠ€(예: DynamoDB)μ—μ„œ μ’‹μ•„μš” 수λ₯Ό +1 μ¦κ°€μ‹œν‚΅λ‹ˆλ‹€.
        const currentLikes = await updateLikesInDatabase(postId);

        // 3. API Gatewayλ₯Ό 톡해 ν”„λ‘ νŠΈμ—”λ“œλ‘œ 응닡을 λ³΄λƒ…λ‹ˆλ‹€.
        return {
            statusCode: 200,
            headers: {
                "Access-Control-Allow-Origin": "*", // CORS ν—ˆμš© ν•„μˆ˜!
            },
            body: JSON.stringify({ 
                message: 'μ’‹μ•„μš” 성곡!', 
                likes: currentLikes 
            }),
        };
    } catch (error) {
        console.error("DB μ—…λ°μ΄νŠΈ 쀑 μ—λŸ¬ λ°œμƒ:", error);
        return {
            statusCode: 500,
            body: JSON.stringify({ message: 'μ„œλ²„ λ‚΄λΆ€ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.' }),
        };
    }
};

πŸ’‘ 싀무 핡심 포인트:

ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ APIλ₯Ό ν˜ΈμΆœν•  λ•Œ λΈŒλΌμš°μ €μ˜ CORS μ—λŸ¬λ₯Ό λ§‰μœΌλ €λ©΄, Lambda의 λ°˜ν™˜κ°’(Return) headers 객체에 λ°˜λ“œμ‹œ "Access-Control-Allow-Origin": "*" λ₯Ό ν¬ν•¨ν•΄μ„œ λ‚΄λ €μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이것을 λˆ„λ½ν•΄μ„œ ν•˜λ£¨ 쒅일 μ‚½μ§ˆν•˜λŠ” μ£Όλ‹ˆμ–΄ 뢄듀이 정말 λ§ŽμŠ΅λ‹ˆλ‹€!

4. μ£Όλ‹ˆμ–΄κ°€ κ²ͺλŠ” μ„œλ²„λ¦¬μŠ€ μ΅œλŒ€ λ‚œμ œ: 'μ½œλ“œ μŠ€νƒ€νŠΈ(Cold Start)'

μ„œλ²„λ¦¬μŠ€λ₯Ό 싀무에 λ„μž…ν•˜λ©΄ 첫 ν…ŒμŠ€νŠΈμ—μ„œ λ¬˜ν•œ μ΄μ§ˆκ°μ„ 느끼게 λ©λ‹ˆλ‹€.

"μ–΄? 방금 첫 번째 클릭 λ•ŒλŠ” λ‘œλ”©μ΄ 3μ΄ˆλ‚˜ κ±Έλ ΈλŠ”λ°, 두 번째 ν΄λ¦­λΆ€ν„°λŠ” 0.1초 λ§Œμ— λ˜λ„€μš”?"

이 ν˜„μƒμ΄ λ°”λ‘œ μ„œλ²„λ¦¬μŠ€μ˜ νƒœμƒμ  ν•œκ³„μΈ 'μ½œλ“œ μŠ€νƒ€νŠΈ(Cold Start)'μž…λ‹ˆλ‹€.

LambdaλŠ” ν‰μ†Œμ— λΉ„μš©μ„ 아끼기 μœ„ν•΄ μΏ¨μΏ¨ μž μ„ 자고 μžˆμŠ΅λ‹ˆλ‹€(μ»¨ν…Œμ΄λ„ˆ μ’…λ£Œ μƒνƒœ). 그런데 κ°‘μžκΈ° μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄, AWSκ°€ λΆ€λž΄λΆ€λž΄ 1) 가상 ν™˜κ²½μ„ λ„μš°κ³  2) μ½”λ“œλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  3) μ΄ˆκΈ°ν™”ν•˜λŠ” 과정을 거치게 λ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” λͺ‡ μ΄ˆκ°„μ˜ μ§€μ—° μ‹œκ°„μ„ μ½œλ“œ μŠ€νƒ€νŠΈλΌκ³  λΆ€λ¦…λ‹ˆλ‹€. 반면, ν•œ 번 κΉ¨μ–΄λ‚œ LambdaλŠ” λ‹ΉλΆ„κ°„(μ•½ 10~15λΆ„) μž λ“€μ§€ μ•Šκ³  λŒ€κΈ°ν•˜λŠ”λ°, μ΄λ•Œ μš”μ²­μ΄ λ“€μ–΄μ˜€λ©΄ μ§€μ—° 없이 μ¦‰μ‹œ μ²˜λ¦¬ν•˜λŠ” 것을 μ›œ μŠ€νƒ€νŠΈ(Warm Start)라고 ν•©λ‹ˆλ‹€.

βœ… μ‹€λ¬΄μ—μ„œμ˜ μ½œλ“œ μŠ€νƒ€νŠΈ ν•΄κ²°μ±…

  1. κ°€λ²Όμš΄ μ–Έμ–΄ 선택: Javaλ‚˜ C#처럼 μ΄ˆκΈ°ν™”κ°€ 무거운 μ–Έμ–΄λ³΄λ‹€λŠ”, Node.jsλ‚˜ Python, Go μ–Έμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ½œλ“œ μŠ€νƒ€νŠΈλ₯Ό 획기적으둜 μ€„μ—¬μ€λ‹ˆλ‹€.
  2. EventBridge(CloudWatch Events)둜 ν•‘(Ping) 날리기: 10λΆ„λ§ˆλ‹€ λžŒλ‹€λ₯Ό μ°”λŸ¬μ£ΌλŠ”(ν˜ΈμΆœν•˜λŠ”) 빈 이벀트λ₯Ό μ˜ˆμ•½ν•΄ 두어 λžŒλ‹€κ°€ μž λ“€μ§€ μ•Šκ²Œ κ΄΄λ‘­νžˆλŠ”(?) κΌΌμˆ˜μž…λ‹ˆλ‹€.
  3. Provisioned Concurrency (μ˜ˆμ•½λœ λ™μ‹œμ„±): νŠΈλž˜ν”½μ΄ 많고 μ§€μ—° μ‹œκ°„μ΄ 치λͺ…적인 μƒμš© μ„œλΉ„μŠ€λΌλ©΄, AWS에 λˆμ„ 쑰금 더 λ‚΄κ³  "항상 λžŒλ‹€ 5λŒ€λŠ” κΉ¨μ›Œλ‘¬!"라고 μ˜ˆμ•½ν•  수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

5. 싀무 κ²½ν—˜μ—μ„œ 얻은 μ„œλ²„λ¦¬μŠ€ 섀계 팁 3κ°€μ§€

μ„œλ²„λ¦¬μŠ€ μ•„ν‚€ν…μ²˜λ₯Ό ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— λ°°ν¬ν•˜λ©° μ²΄λ“ν•œ 피와 땀이 μ„žμΈ νŒμ„ κ³΅μœ ν•©λ‹ˆλ‹€.

  • 팁 1: API Gateway의 29초 νƒ€μž„μ•„μ›ƒμ„ λͺ…μ‹¬ν•˜μ„Έμš”.
  • Lambda μžμ²΄λŠ” μ΅œλŒ€ 15λΆ„κΉŒμ§€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ·Έ μ•žλ‹¨μ— μ„œ μžˆλŠ” API GatewayλŠ” 무쑰건 29초 μ•ˆμ— 응닡을 μ£Όμ§€ μ•ŠμœΌλ©΄ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 504 Gateway Timeout μ—λŸ¬λ₯Ό λ±‰μ–΄λ²„λ¦½λ‹ˆλ‹€. λ”₯λŸ¬λ‹ λͺ¨λΈ μΆ”λ‘ μ΄λ‚˜ λŒ€μš©λŸ‰ μ—‘μ…€ λ‹€μš΄λ‘œλ“œμ²˜λŸΌ 30초 이상 κ±Έλ¦¬λŠ” 무거운 μž‘μ—…μ€ API Gatewayλ₯Ό κ±°μΉ˜λŠ” λ™κΈ°μ‹μœΌλ‘œ μ„€κ³„ν•˜λ©΄ μ ˆλŒ€ μ•ˆ λ©λ‹ˆλ‹€. (이 경우 비동기식 섀계가 ν•„μš”ν•©λ‹ˆλ‹€.)
  • 팁 2: λͺ¨λ“  κΈ°λŠ₯을 ν•˜λ‚˜μ˜ Lambda에 λ•Œλ € λ„£μ§€ λ§ˆμ„Έμš” (Fat Lambda μ§€μ–‘).
  • Express.jsλ‚˜ Spring Boot둜 λΌμš°νŒ…μ„ μ§œλ“― ν•˜λ‚˜μ˜ Lambda 파일 μ•ˆμ— μœ μ € 쑰회, μƒν’ˆ 등둝, 결제 λ‘œμ§μ„ λ‹€ λ„£μœΌλ©΄ (이λ₯Έλ°” λš±λš±ν•œ λžŒλ‹€), 파일 μš©λŸ‰μ΄ 컀져 μ½œλ“œ μŠ€νƒ€νŠΈκ°€ 심해지고 μœ μ§€λ³΄μˆ˜κ°€ μ§€μ˜₯이 λ©λ‹ˆλ‹€. κΈ°λŠ₯ λ‹¨μœ„(λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€)둜 λžŒλ‹€λ₯Ό μͺΌκ°œμ„œ API Gatewayμ—μ„œ URLλ³„λ‘œ μ—°κ²°ν•΄ μ£ΌλŠ” 것이 μ •μ„μž…λ‹ˆλ‹€.
  • 팁 3: ν™˜κ²½ λ³€μˆ˜(Environment Variables)둜 DB λΉ„λ°€λ²ˆν˜Έλ₯Ό ν•˜λ“œμ½”λ”©ν•˜μ§€ λ§ˆμ„Έμš”.
  • μ½”λ“œ 내뢀에 DB λΉ„λ°€λ²ˆν˜Έλ₯Ό μ μ–΄λ‘λŠ” 것은 κΈˆλ¬Όμž…λ‹ˆλ‹€. Lambda의 ꡬ성 νƒ­μ—μ„œ ν™˜κ²½ λ³€μˆ˜λ‘œ λΆ„λ¦¬ν•˜μ—¬ μ£Όμž…ν•˜κ³ , 더 높은 λ³΄μ•ˆμ΄ ν•„μš”ν•˜λ‹€λ©΄ AWS Secrets Managerλ‚˜ Parameter Storeλ₯Ό κ²°ν•©ν•΄ λŸ°νƒ€μž„μ— μ•ˆμ „ν•˜κ²Œ λΉ„λ°€λ²ˆν˜Έλ₯Ό κ°€μ Έμ˜€λ„λ‘ μ„€κ³„ν•˜μ„Έμš”.

ν΄λΌμš°λ“œμ˜ λ°œμ „μœΌλ‘œ 이제 κ°œλ°œμžλŠ” 'μ„œλ²„ 인프라 ꡬ좕'μ΄λΌλŠ” 무거운 짐을 내렀놓고, 였직 'λΉ„μ¦ˆλ‹ˆμŠ€ 둜직(μ½”λ“œ)'μ—λ§Œ 집쀑할 수 μžˆλŠ” μ‹œλŒ€κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 특히 μ‚¬μ΄λ“œ ν”„λ‘œμ νŠΈλ‚˜ 포트폴리였λ₯Ό μ€€λΉ„ν•˜λŠ” μ£Όλ‹ˆμ–΄ κ°œλ°œμžμ—κ²Œ 맀달 0원에 μˆ˜λ ΄ν•˜λŠ” λΉ„μš©μœΌλ‘œ λ¬΄ν•œν•œ ν™•μž₯이 κ°€λŠ₯ν•œ μ„œλ²„λ¦¬μŠ€ μ•„ν‚€ν…μ²˜λŠ” 선택이 μ•„λ‹Œ ν•„μˆ˜ λ¬΄κΈ°μž…λ‹ˆλ‹€. 였늘 배운 λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ λ‚˜λ§Œμ˜ 첫 번째 μ„œλ²„λ¦¬μŠ€ APIλ₯Ό λ„μ›Œλ³΄μ‹œκΈΈ λ°”λžλ‹ˆλ‹€!

728x90
λ°˜μ‘ν˜•
LIST