[nodejs] 서버리스 아키텍처에서의 비동기 통신과 이벤트 드리븐 패턴

서버리스 아키텍처에서는 비동기 통신이벤트 드리븐 패턴이 매우 중요합니다. 비동기 통신은 서버리스 함수가 마이크로서비스나 다른 서버리스 함수와 효율적으로 통신할 수 있는 핵심 요소입니다. 이벤트 드리븐 패턴은 서버리스 애플리케이션을 느슨하게 결합된 서비스로 구축할 수 있도록 해줍니다.

비동기 통신

서버리스 함수는 특성상 응답성이 뛰어나야 합니다. 대부분의 경우 외부 자원에 대한 요청(예: 데이터베이스 쿼리, API 호출)이 필요하며, 이러한 작업은 시간이 많이 소요될 수 있습니다. 이러한 이유로 서버리스 함수는 비동기 방식으로 외부 자원에 접근하고 결과를 기다리지 않고 다른 작업을 수행할 수 있어야 합니다.

예를 들어, Node.js에서 비동기 통신을 위해 async/awaitPromise를 사용합니다.

async function fetchData() {
  try {
    let data = await getDataFromDatabase(); // 외부 자원 액세스
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

이벤트 드리븐 패턴

서버리스 아키텍처에서는 이벤트 드리븐 패턴을 통해 서비스들을 느슨하게 연결합니다. 이벤트 드리븐 아키텍처는 이벤트 발생 시 특정 동작을 수행하도록 설계됩니다. AWS Lambda나 Azure Functions와 같은 서버리스 함수는 다양한 이벤트(예: HTTP 요청, 메시지 큐, 스트림)를 이용하여 트리거될 수 있습니다.

예를 들어, AWS Lambda 함수는 S3 버킷에 새로운 파일이 업로드될 때 트리거될 수 있습니다.

exports.handler = async (event) => {
  const fileName = event.Records[0].s3.object.key;
  console.log(`New file uploaded: ${fileName}`);
  // 다른 작업 수행
};

서버리스 아키텍처의 효율적인 비동기 통신과 이벤트 드리븐 패턴을 활용하여 확장 가능하고 신뢰할 수 있는 애플리케이션을 구축할 수 있습니다.

이와 관련된 참고 자료: AWS Lambda Documentation, Azure Functions Documentation