νμ μ€ν¬λ¦½νΈκ° μλ²λ¦¬μ€ FaaS μν€ν μ²μμ νμ μμ μ±μ μ΄λ»κ² ν₯μμν€λμ§ μμλ³΄κ³ , κΈλ‘λ² νμ μμ μ±κ³Ό κ°λ°μ κ²½νμ κ°μ ν©λλ€.
νμ μ€ν¬λ¦½νΈ μλ²λ¦¬μ€ μ»΄ν¨ν : FaaSμ νμ μμ μ±
μλ²λ¦¬μ€ μ»΄ν¨ν μ νμ₯μ±, λΉμ© ν¨μ¨μ±, μ΄μ μ€λ²ν€λ κ°μλ₯Ό μ 곡νλ©° μ ν리μΌμ΄μ  κ΅¬μΆ λ° λ°°ν¬ λ°©μμ νμ νμ΅λλ€. AWS Lambda, Azure Functions, Google Cloud Functionsμ κ°μ μλΉμ€ν ν¨μ(FaaS) νλ«νΌμ ν΅ν΄ κ°λ°μλ μλ²λ₯Ό κ΄λ¦¬ν νμ μμ΄ μ½λ μμ±μ μ§μ€ν μ μμ΅λλ€. νμ§λ§ μ΄λ¬ν νκ²½μμ μ ν΅μ μΌλ‘ μ¬μ©λλ JavaScriptμ λμ μΈ νΉμ±μ λ°νμ μ€λ₯λ₯Ό λ°μμν€κ³ λλ²κΉ μ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€. μ¬κΈ°μ νμ μ€ν¬λ¦½νΈκ° κ°λ ₯ν νμ΄νκ³Ό ν₯μλ λꡬλ₯Ό μλ²λ¦¬μ€ μΈκ³μ λμ νλ©° λΉμ λ°ν©λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ νμ μ€ν¬λ¦½νΈκ° μλ²λ¦¬μ€ FaaS μν€ν μ²μμ νμ μμ μ±μ μ΄λ»κ² ν₯μμν€λμ§, κΈλ‘λ² νμ μμ μ±κ³Ό κ°λ°μ κ²½νμ κ°μ νλμ§ μ΄ν΄λ΄ λλ€.
μλ²λ¦¬μ€ ν¨μμ νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ μ΄μ ?
νμ μ€ν¬λ¦½νΈλ μ μ  νμ΄ν κΈ°λ₯μ μΆκ°ν JavaScriptμ μνΌμ μ λλ€. κ°λ°μλ λ³μ, ν¨μ λ§€κ°λ³μ λ° λ°ν κ°μ νμ μ μ μν μ μμ΄ λ°νμμ΄ μλ κ°λ° μ€μ μ€λ₯λ₯Ό μ‘°κΈ°μ κ°μ§ν μ μμ΅λλ€. μ΄λ ν¨μκ° μ§§κ² μ€νλκ³ μ΄λ²€νΈμ μλ΅νμ¬ μμ£Ό μ€νλλ μλ²λ¦¬μ€ νκ²½μμ νΉν μ€μν©λλ€.
μλ²λ¦¬μ€ μ»΄ν¨ν μμ νμ μ€ν¬λ¦½νΈμ μ΄μ :
- ν₯μλ νμ μμ μ±: κ°λ° μ€μ μ€λ₯λ₯Ό μ‘°κΈ°μ κ°μ§νμ¬ λ°νμ μμΈμ μνμ μ€μ λλ€. μλ₯Ό λ€μ΄, API νΈμΆμμ λ°μ λ°μ΄ν°κ° μ²λ¦¬λκΈ° μ μ μμλ ꡬ쑰μ μΌμΉνλμ§ νμΈν©λλ€.
 - ν₯μλ μ½λ μ μ§λ³΄μμ±: νμ μ€ν¬λ¦½νΈμ νμ μ£Όμμ νΉν μ¬λ¬ κ°λ°μκ° μ°Έμ¬νλ λκ·λͺ¨ μλ²λ¦¬μ€ νλ‘μ νΈμμ μ½λλ₯Ό λ μ½κ² μ΄ν΄νκ³ μ μ§λ³΄μν μ μλλ‘ ν©λλ€. μ¬λ¬ κ°λ°μκ° λ³΅μ‘ν ETL νμ΄νλΌμΈμ μμ νλ μλ리μ€λ₯Ό μμν΄ λ³΄μΈμ. νμ μ€ν¬λ¦½νΈλ μ격ν μΈν°νμ΄μ€λ₯Ό μ μ©νμ¬ νμ΄νλΌμΈ μ 체μμ λ°μ΄ν° μΌκ΄μ±μ 보μ₯ν©λλ€.
 - λ λμ λꡬ λ° IDE μ§μ: νμ μ€ν¬λ¦½νΈλ VS Code, WebStorm λ± IDEμμ μ 곡νλ μλ μμ±, 리ν©ν λ§, μ μ  λΆμμ ν¬ν¨ν νλ₯ν λꡬ μ§μμ μ΄μ μ λ릴 μ μμ΅λλ€. μ΄λ κ°λ°μ μμ°μ±μ λμ΄κ³ λλ²κΉ μκ°μ μ€μ λλ€.
 - λ°νμ μ€λ₯ κ°μ: νμ κ²μ¬λ₯Ό κ°μ ν¨μΌλ‘μ¨ νμ μ€ν¬λ¦½νΈλ μ μλμ§ μμ μμ± μ‘μΈμ€ λ° μλͺ»λ ν¨μ μΈμμ κ°μ μΌλ°μ μΈ λ°νμ μ€λ₯λ₯Ό λ°©μ§νλ λ° λμμ΄ λ©λλ€. μ΄λ λ μμ μ μ΄κ³ μ λ’°ν μ μλ μλ²λ¦¬μ€ μ ν리μΌμ΄μ μΌλ‘ μ΄μ΄μ§λλ€. Lambda ν¨μκ° μ¬μ©μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ κ²½μ°λ₯Ό κ³ λ €ν΄ λ³΄μΈμ. νμ μ€ν¬λ¦½νΈλ λ°νμ μ€λ₯λ₯Ό λ°©μ§νκΈ° μν΄ 'email' λ° 'userId'μ κ°μ νμ νλκ° νμ μ‘΄μ¬νλλ‘ λ³΄μ₯ν μ μμ΅λλ€.
 - λ μ¬μ΄ νμ : νμ μ€ν¬λ¦½νΈμ λͺ μμ μΈ νμ μ μμλλ λ°μ΄ν° ꡬ쑰μ ν¨μ μκ·Έλμ²μ λν λͺ νν μ΄ν΄λ₯Ό μ 곡νλ―λ‘ κ°λ°μ κ°μ νμ μ μ΄μ§ν©λλ€. μ΄λ 볡μ‘ν μλ²λ¦¬μ€ νλ‘μ νΈμ μ°Έμ¬νλ λΆμ° νμ νΉν μ μ΅ν©λλ€.
 
νμ μ€ν¬λ¦½νΈ μλ²λ¦¬μ€ νλ‘μ νΈ μ€μ 
μλ²λ¦¬μ€ νκ²½μμ νμ μ€ν¬λ¦½νΈλ₯Ό μμνλ €λ©΄ νμν λꡬμ ꡬμ±μ κ°μΆ νλ‘μ νΈλ₯Ό μ€μ ν΄μΌ ν©λλ€. μΌλ°μ μΌλ‘ νμ μ€ν¬λ¦½νΈ μ»΄νμΌλ¬ λ° κ΄λ ¨ μ’ μμ±κ³Ό ν¨κ» Serverless Framework λλ AWS CDKμ κ°μ μλ²λ¦¬μ€ νλ μμν¬λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
AWS Lambdaμ Serverless Frameworkλ₯Ό μ¬μ©ν μ:
- Serverless Framework μ€μΉ:
    
npm install -g serverless - μλ‘μ΄ νμ
μ€ν¬λ¦½νΈ μλ²λ¦¬μ€ νλ‘μ νΈ μμ±:
    
serverless create --template aws-typescript --path my-typescript-serverless-app - μ’
μμ± μ€μΉ:
    
cd my-typescript-serverless-app npm install - νμ
μ€ν¬λ¦½νΈλ‘ Lambda ν¨μ μμ± (
handler.ts):import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda'; interface ResponseData { message: string; } export const hello = async (event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> => { const responseData: ResponseData = { message: 'Go Serverless v3.0! Your function executed successfully!' }; return { statusCode: 200, body: JSON.stringify(responseData), }; }; serverless.ymlꡬμ±:service: my-typescript-serverless-app frameworkVersion: '3' provider: name: aws runtime: nodejs16.x region: us-east-1 functions: hello: handler: handler.hello events: - http: path: hello method: get- ν¨μ λ°°ν¬:
    
serverless deploy 
μ€λͺ :
aws-typescriptν νλ¦Ώμ νμ μ€ν¬λ¦½νΈ μ§μμ κ°μΆ κΈ°λ³Έ νλ‘μ νΈ κ΅¬μ‘°λ₯Ό μ€μ ν©λλ€.handler.tsνμΌμλ μ΄λ²€νΈ, 컨ν μ€νΈ λ° λ°ν κ°μ λν νμ μ£Όμμ΄ μλ Lambda ν¨μ μ½λκ° ν¬ν¨λ©λλ€.serverless.ymlνμΌμ μ 곡μ, λ°νμ λ° ν¨μλ₯Ό ν¬ν¨ν μλ²λ¦¬μ€ μ ν리μΌμ΄μ  ꡬμ±μ μ μν©λλ€.
μλ²λ¦¬μ€ ν¨μμ νμ μ€ν¬λ¦½νΈ κΈ°λ₯ νμ©
νμ μ€ν¬λ¦½νΈλ μλ²λ¦¬μ€ ν¨μ κ°λ°μ νΉν μ μ΅ν λ€μν κΈ°λ₯μ μ 곡ν©λλ€.
μΈν°νμ΄μ€ λ° νμ λ³μΉ:
μΈν°νμ΄μ€μ νμ λ³μΉμ μ¬μ©νλ©΄ ν¨μμμ μ¬μ©λλ λ°μ΄ν° ꡬ쑰μ λν μ¬μ©μ μ§μ  νμ μ μ μν μ μμ΅λλ€. μ΄λ κ² νλ©΄ λ°μ΄ν°κ° μμλλ νμκ³Ό μΌμΉνλμ§ νμΈνκ³ μλͺ»λ λ°μ΄ν° νμ κ³Ό κ΄λ ¨λ μ€λ₯λ₯Ό λ°©μ§νλ λ° λμμ΄ λ©λλ€.
μ: μ¬μ©μ λ°μ΄ν°μ λν μΈν°νμ΄μ€ μ μ:
interface User {
  id: string;
  name: string;
  email: string;
  age?: number; // μ νμ  μμ±
}
const processUser = (user: User) => {
  console.log(`Processing user: ${user.name} (${user.email})`);
};
// μ¬μ© μ:
const validUser: User = {
  id: '123',
  name: 'John Doe',
  email: 'john.doe@example.com'
};
processUser(validUser);
μ΄κ±°ν (Enums):
μ΄κ±°νμ λͺ λͺ λ μμ μ§ν©μ μ μνλ λ°©λ²μ μ 곡ν©λλ€. ν¨μμμ λ€μν μν λλ λ²μ£Όλ₯Ό λνλ΄λ λ° μ¬μ©λ μ μμΌλ©° μ½λλ₯Ό λ μ½κΈ° μ½κ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
μ: μ£Όλ¬Έ μνμ λν μ΄κ±°ν μ μ:
enum OrderStatus {
  PENDING = 'PENDING',
  PROCESSING = 'PROCESSING',
  SHIPPED = 'SHIPPED',
  DELIVERED = 'DELIVERED',
  CANCELLED = 'CANCELLED',
}
const updateOrderStatus = (orderId: string, status: OrderStatus) => {
  console.log(`Updating order ${orderId} status to ${status}`);
  // ... λ°μ΄ν°λ² μ΄μ€ μ
λ°μ΄νΈ
};
// μ¬μ© μ:
updateOrderStatus('456', OrderStatus.SHIPPED);
μ λ€λ¦ (Generics):
μ λ€λ¦μ μ¬μ©νλ©΄ λ€λ₯Έ νμ κ³Ό ν¨κ» μλνλ μ¬μ¬μ© κ°λ₯ν μ½λλ₯Ό μμ±ν μ μμ΅λλ€. νμ μ ꡬμ λ°μ§ μλ μ νΈλ¦¬ν° ν¨μλ λ°μ΄ν° ꡬ쑰λ₯Ό λ§λλ λ° νΉν μ μ©ν©λλ€.
μ: λ°°μ΄μμ νλͺ©μ κ°μ Έμ€λ μ λ€λ¦ ν¨μ μμ±:
function getItem<T>(array: T[], index: number): T | undefined {
  if (index >= 0 && index < array.length) {
    return array[index];
  } else {
    return undefined;
  }
}
// μ¬μ© μ:
const numbers: number[] = [1, 2, 3];
const firstNumber: number | undefined = getItem(numbers, 0);
const strings: string[] = ['a', 'b', 'c'];
const firstString: string | undefined = getItem(strings, 0);
λ°μ½λ μ΄ν° (Decorators):
λ°μ½λ μ΄ν°λ ν΄λμ€, λ©μλ λλ μμ±μ λ©νλ°μ΄ν°λ₯Ό μΆκ°νκ±°λ λμμ μμ νλ λ°©λ²μ μ 곡ν©λλ€. λ‘κΉ , μΈμ¦ λλ κ²μ¦κ³Ό κ°μ κ΅μ°¨ κ΄μ¬μ¬λ₯Ό μ μΈμ μΈ λ°©μμΌλ‘ ꡬννλ λ° μ¬μ©ν μ μμ΅λλ€.
μ: ν¨μ νΈμΆ λ‘κΉ μ μν λ°μ½λ μ΄ν° μμ±:
function logMethod(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`Calling method ${propertyKey} with arguments: ${JSON.stringify(args)}`);
    const result = originalMethod.apply(this, args);
    console.log(`Method ${propertyKey} returned: ${JSON.stringify(result)}`);
    return result;
  };
  return descriptor;
}
class MyService {
  @logMethod
  add(a: number, b: number): number {
    return a + b;
  }
}
const service = new MyService();
service.add(2, 3);
νμ μ€ν¬λ¦½νΈ μλ²λ¦¬μ€ κ°λ°μ μν λͺ¨λ² μ¬λ‘
μλ²λ¦¬μ€ κ°λ°μμ νμ μ€ν¬λ¦½νΈμ μ΄μ μ κ·Ήλννλ €λ©΄ λͺ κ°μ§ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ€μν©λλ€.
- μ격 λͺ¨λ μ¬μ©: 
tsconfig.jsonνμΌμμ μ격 λͺ¨λλ₯Ό νμ±ννμ¬ λ μ격ν νμ κ²μ¬λ₯Ό μ μ©νκ³ μ μ¬μ  μ€λ₯λ₯Ό μ‘°κΈ°μ κ°μ§ν©λλ€. μ¬κΈ°μλnoImplicitAny,strictNullChecks,strictFunctionTypesμ κ°μ μ€μ μ νμ±ννλ κ²μ΄ ν¬ν¨λ©λλ€. - λͺ νν μΈν°νμ΄μ€ μ μ: ν¨μμμ μ¬μ©λλ λͺ¨λ λ°μ΄ν° ꡬ쑰μ λν΄ λͺ ννκ³ κ°κ²°ν μΈν°νμ΄μ€λ₯Ό μ μν©λλ€. μ΄λ μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κ³ μλͺ»λ λ°μ΄ν° νμ κ³Ό κ΄λ ¨λ μ€λ₯λ₯Ό λ°©μ§νλ λ° λμμ΄ λ©λλ€.
 - λ¨μ ν μ€νΈ μμ±: ν¨μκ° μμλλ‘ μλνκ³ λ€μν μ λ ₯ μλ리μ€λ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬νλμ§ νμΈνκΈ° μν΄ ν¬κ΄μ μΈ λ¨μ ν μ€νΈλ₯Ό μμ±ν©λλ€. Jestμ κ°μ λͺ¨νΉ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ ν¨μ λ‘μ§μ μΈλΆ μ’ μμ±μΌλ‘λΆν° 격리ν©λλ€.
 - μλ²λ¦¬μ€ νλ μμν¬ μ¬μ©: Serverless Framework λλ AWS CDKμ κ°μ μλ²λ¦¬μ€ νλ μμν¬λ₯Ό μ¬μ©νμ¬ ν¨μμ λ°°ν¬ λ° κ΄λ¦¬λ₯Ό λ¨μνν©λλ€. μ΄λ¬ν νλ μμν¬λ νμν ν΄λΌμ°λ 리μμ€λ₯Ό μμ±νκ³ κ΅¬μ±νλ νλ‘μΈμ€λ₯Ό μλνν©λλ€.
 - ν¨μ λͺ¨λν°λ§: ν¨μμ μ±λ₯κ³Ό μνλ₯Ό μΆμ νκΈ° μν΄ λͺ¨λν°λ§ λ° λ‘κΉ μ ꡬνν©λλ€. μ΄λ λ¬Έμ λ₯Ό μ μνκ² μλ³νκ³ ν΄κ²°νλ λ° λμμ΄ λλ©° μλ²λ¦¬μ€ μ ν리μΌμ΄μ μ΄ μννκ² μ€νλλλ‘ λ³΄μ₯ν©λλ€. AWS CloudWatch, Azure Monitor λλ Google Cloud Loggingκ³Ό κ°μ λꡬλ₯Ό μ¬μ©ν©λλ€.
 - μ½λ μ€ννΈ κ³ λ €: μλ²λ¦¬μ€ νκ²½μ μ½λ μ€ννΈλ₯Ό μΈμ§νκ³ μν₯μ μ΅μννλλ‘ ν¨μλ₯Ό μ΅μ νν©λλ€. μ¬κΈ°μλ νλ‘λΉμ λλ λμμ±(AWS Lambda) λλ μ¬μ  μλ° ν¨μμ κ°μ κΈ°μ μ¬μ©μ΄ ν¬ν¨λ μ μμ΅λλ€.
 - ν¨μ 보μ: λ¬΄λ¨ μ‘μΈμ€ λ° μ μμ μΈ κ³΅κ²©μΌλ‘λΆν° ν¨μλ₯Ό 보νΈνκΈ° μν΄ μ μ ν 보μ μ‘°μΉλ₯Ό ꡬνν©λλ€. μ¬κΈ°μλ μ΅μ κΆνμ΄ μλ IAM μν μ¬μ©, μ λ ₯ λ°μ΄ν° μ ν¨μ± κ²μ¬, μΈμ¦ λ° κΆν λΆμ¬ λ©μ»€λμ¦ κ΅¬νμ΄ ν¬ν¨λ©λλ€.
 - νλ‘μ νΈ λ Όλ¦¬μ μΌλ‘ ꡬ쑰ν: νλ‘μ νΈλ₯Ό λ Όλ¦¬μ μΈ λͺ¨λκ³Ό λλ ν λ¦¬λ‘ κ΅¬μ±ν©λλ€. μ΄λ κ² νλ©΄ νλ‘μ νΈκ° μ±μ₯ν¨μ λ°λΌ μ½λλ₯Ό λͺ ννκ³ μ μ§λ³΄μνκΈ° μ½κ² μ μ§νμ¬ κ°λ°μ κ°μ νμ μ μ§μν©λλ€.
 
μΌλ°μ μΈ λ¬Έμ  ν΄κ²°
νμ μ€ν¬λ¦½νΈλ μλΉν μ΄μ μ μ 곡νμ§λ§ μλ²λ¦¬μ€ κ°λ°μμ μ¬μ©ν λ κ³ λ €ν΄μΌ ν λͺ κ°μ§ λ¬Έμ κ° μμ΅λλ€.
- 볡μ‘μ± μ¦κ°: νμ μ€ν¬λ¦½νΈλ λ°°ν¬ μ μ μ½λλ₯Ό JavaScriptλ‘ μ»΄νμΌν΄μΌ νλ―λ‘ κ°λ° νλ‘μΈμ€μ μΆκ°μ μΈ λ³΅μ‘μ±μ λν©λλ€. κ·Έλ¬λ νμ μμ μ±κ³Ό ν₯μλ λꡬμ μ΄μ μ μ’ μ’ μ΄λ¬ν μΆκ° 볡μ‘μ±μ λ₯κ°ν©λλ€.
 - νμ΅ κ³‘μ : νμ μ€ν¬λ¦½νΈκ° μ²μμΈ κ°λ°μλ μΈμ΄μ κΈ°λ₯μ λ°°μ°λ λ° μκ°μ ν¬μν΄μΌ ν μ μμ΅λλ€. κ·Έλ¬λ ꡬ문μ JavaScriptμ μ μ¬νλ―λ‘ μ νμ΄ λΉκ΅μ  μ½μ΅λλ€.
 - λΉλ μκ°: νΉν λκ·λͺ¨ νλ‘μ νΈμ κ²½μ° μ»΄νμΌ νλ‘μΈμ€κ° λΉλ μκ°μ μΆκ°λ μ μμ΅λλ€. κ·Έλ¬λ μ¦λΆ μ»΄νμΌ λ° κΈ°ν μ΅μ ν κΈ°μ μ μ΄ λ¬Έμ λ₯Ό μννλ λ° λμμ΄ λ μ μμ΅λλ€.
 - νΈνμ± λ¬Έμ : νμ μ€ν¬λ¦½νΈ μ½λκ° μλ²λ¦¬μ€ ν¨μμ λμ λ°νμ νκ²½κ³Ό νΈνλλμ§ νμΈν©λλ€. μ¬κΈ°μλ νΉμ  μ»΄νμΌλ¬ μ΅μ  λλ ν΄λ¦¬ν μ¬μ©μ΄ ν¬ν¨λ μ μμ΅λλ€.
 
μ€μ  μ¬λ‘ λ° μ¬λ‘ μ°κ΅¬
λ§μ μ‘°μ§μ΄ μλ²λ¦¬μ€ μν€ν μ²μμ νμ μ€ν¬λ¦½νΈλ₯Ό μ±κ³΅μ μΌλ‘ μ¬μ©νμ¬ μ ν리μΌμ΄μ μ μμ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κ³ μμ΅λλ€. λ€μμ λͺ κ°μ§ κ°μ μμ λλ€.
μ 1: μ μ μκ±°λ μ£Όλ¬Έ μ²λ¦¬ μμ€ν 
κΈλ‘λ² μ μ μκ±°λ νμ¬λ μλ²λ¦¬μ€ ν¨μλ₯Ό μ¬μ©νμ¬ κ³ κ° μ£Όλ¬Έμ μ²λ¦¬ν©λλ€. νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ©΄ μ£Όλ¬Έ λ°μ΄ν°λ₯Ό μ¬λ°λ₯΄κ² κ²μ¦νκ³ μ£Όλ¬Έ μ²λ¦¬λ₯Ό μμνκΈ° μ μ νμν λͺ¨λ νλκ° μλμ§ νμΈν μ μμ΅λλ€. μ΄λ κ² νλ©΄ μ€λ₯ μνμ΄ μ€μ΄λ€κ³ μ λ°μ μΈ κ³ κ° κ²½νμ΄ ν₯μλ©λλ€. μλ₯Ό λ€μ΄, λ€λ₯Έ κ΅κ°μμ μ£Όλ¬Έμ λ°μ λ νμ μ€ν¬λ¦½νΈμ μ격ν νμ΄νμ λ€μν μ£Όμ νμ(μ: μ°νΈ λ²νΈ, 거리 μ£Όμ μμ)μλ λΆκ΅¬νκ³ μΌκ΄λ λ°μ΄ν° νμ μ ν¨μ±μ 보μ₯ν©λλ€. μ΄λ ν΅ν© μ€λ₯λ₯Ό μ€μ΄κ³ λ°μ΄ν° μ νλλ₯Ό ν₯μμν΅λλ€.
μ 2: λ°μ΄ν° λΆμ νμ΄νλΌμΈ
λ°μ΄ν° λΆμ νμ¬λ μλ²λ¦¬μ€ ν¨μλ₯Ό μ¬μ©νμ¬ λλμ λ°μ΄ν°λ₯Ό μ²λ¦¬νκ³ λΆμν©λλ€. νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ©΄ νμ΄νλΌμΈμμ μ¬μ©λλ λ°μ΄ν° ꡬ쑰μ λν λͺ νν μΈν°νμ΄μ€λ₯Ό μ μνμ¬ λ°μ΄ν°κ° κ° λ¨κ³μμ μ¬λ°λ₯΄κ² λ³νλκ³ μ²λ¦¬λλμ§ νμΈν μ μμ΅λλ€. μ΄λ κ² νλ©΄ λΆμ κ²°κ³Όμ μ νμ±κ³Ό μ λ’°μ±μ΄ ν₯μλ©λλ€. μμ  λ―Έλμ΄ API, νλ§€ λ°μ΄ν°λ² μ΄μ€, λ§μΌν μλν λꡬλ₯Ό ν¬ν¨ν λ€μν μμ€μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ€κ³ μμν΄ λ³΄μΈμ. νμ μ€ν¬λ¦½νΈλ λͺ¨λ μμ€μμ μΌκ΄λ λ°μ΄ν° μ€ν€λ§λ₯Ό κ°μ νμ¬ λ°μ΄ν° λ³ν λ° λΆμμ κ°μνν©λλ€. μ΄λ μ νν μΈμ¬μ΄νΈ λ° λ³΄κ³ μλ₯Ό μμ±νλ λ° μ€μν©λλ€.
μλ²λ¦¬μ€ μ»΄ν¨ν μμμ νμ μ€ν¬λ¦½νΈμ λ―Έλ
λ λ§μ κ°λ°μκ° κ·Έ μ΄μ μ μΈμν¨μ λ°λΌ μλ²λ¦¬μ€ μ»΄ν¨ν μμ νμ μ€ν¬λ¦½νΈμ μ¬μ©μ κ³μ μ¦κ°ν κ°λ₯μ±μ΄ λμ΅λλ€. μλ²λ¦¬μ€ μν€ν μ²κ° 볡μ‘ν΄μ§μ λ°λΌ νμ μμ μ±κ³Ό ν₯μλ λꡬμ λν νμμ±μ λμ± μ€μν΄μ§ κ²μ λλ€. νμ μ€ν¬λ¦½νΈλ μμ μ μ΄κ³ μ μ§λ³΄μ κ°λ₯ν μλ²λ¦¬μ€ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν κ²¬κ³ ν κΈ°λ°μ μ 곡νλ©°, ν₯ν λͺ λ  λμ μ±νμ΄ κ°μνλ κ²μΌλ‘ μμλ©λλ€. νμ μ€ν¬λ¦½νΈμ μλ²λ¦¬μ€ κΈ°μ μ μ΅ν©μ κ°λ°μκ° λ€μν μ¬μ© μ¬λ‘μ λν΄ νμ₯μ±μ΄ λκ³ λΉμ© ν¨μ¨μ μ΄λ©° κ°λ ₯ν μ루μ μ λ§λ€ μ μλλ‘ μ§μν©λλ€.
κ²°λ‘
νμ μ€ν¬λ¦½νΈλ ν₯μλ νμ μμ μ±, κ°μ λ μ½λ μ μ§λ³΄μμ±, λ λμ λꡬ μ§μ λ° λ°νμ μ€λ₯ κ°μλ₯Ό ν¬ν¨νμ¬ μλ²λ¦¬μ€ ν¨μ κ°λ°μ μλΉν μ΄μ μ μ 곡ν©λλ€. νμ μ€ν¬λ¦½νΈλ₯Ό μ±νν¨μΌλ‘μ¨ κ°λ°μλ λ μμ μ μ΄κ³ νμ₯ κ°λ₯ν μλ²λ¦¬μ€ μ ν리μΌμ΄μ μ ꡬμΆνμ¬ μ λ°μ μΈ κ°λ°μ κ²½νκ³Ό μμ°μ±μ ν₯μμν¬ μ μμ΅λλ€. μκ·λͺ¨ APIλ₯Ό ꡬμΆνλ λκ·λͺ¨ λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈμ ꡬμΆνλ νμ μ€ν¬λ¦½νΈλ νλ ν΄λΌμ°λ μ»΄ν¨ν μ μꡬ μ¬νμ μΆ©μ‘±νλ κ°λ ₯νκ³ μ μ§λ³΄μ κ°λ₯ν μλ²λ¦¬μ€ μ루μ μ λ§λλ λ° λμμ΄ λ μ μμ΅λλ€.