서비스형 함수

서비스형 함수(Function as a service, FaaS)는 ISO/IEC 22123-2에 따르면 사용자가 "확장성을 위해 낮은 초기 투자로 마이크로서비스 애플리케이션을 구축하고 관리할 수 있도록 하는 플랫폼 수준 클라우드 기능"이다.

서비스형 함수는 서버리스 컴퓨팅 생태계의 하위 집합이다.

 안티패턴 
"모래알 안티패턴(Grain of Sand Anti-pattern)"은 시스템 내에서 지나치게 작은 구성 요소(예: 함수)를 생성하여 복잡성, 운영 오버헤드 및 성능 비효율성을 증가시키는 것을 의미한다. "람다 핀볼(Lambda Pinball)"은 함수(예: AWS 람다, Azure Functions)가 파편화된 체인에서 서로를 과도하게 호출할 때 서버리스 아키텍처에서 발생할 수 있는 관련 안티패턴으로, 대기 시간, 디버깅 및 테스트 문제, 관찰 가능성 저하를 초래한다. 이러한 안티패턴은 분산된 모놀리스의 형성과 관련이 있다.

이러한 안티패턴은 종종 공용 인터페이스와 게시된 인터페이스를 구분하는 명확한 도메인 경계를 적용하여 해결된다. 공용 인터페이스는 메서드, 클래스, API 엔드포인트 또는 트리거와 같은 기술적으로 접근 가능한 인터페이스이지만 공식적인 안정성 보장은 제공되지 않는다. 반대로 게시된 인터페이스는 공식 버전 관리, 철저한 문서화, 명확한 사용 중단 정책, 그리고 종종 역방향 호환성 지원을 포함한 명시적인 안정성 계약을 수반한다. 게시된 인터페이스는 또한 여러 버전을 동시에 유지하고 호환성을 깨는 변경 사항이 도입될 때 공식적인 사용 중단 프로세스를 준수해야 할 수도 있다.

함수 호출의 파편화된 체인은 서버리스 구성 요소(함수)가 복잡한 패턴으로 다른 리소스와 상호 작용하는 시스템에서 종종 관찰되며, 때로는 스파게티 아키텍처 또는 분산된 모놀리스로 설명된다. 반대로, 더 명확한 경계를 보이는 시스템은 서버리스 구성 요소를 응집력 있는 그룹으로 구성하며, 내부 공용 인터페이스가 구성 요소 간 통신을 관리하고 게시된 인터페이스가 그룹 경계를 넘는 통신을 정의한다. 이러한 구분은 안정성 보장 및 유지 보수 약속의 차이를 강조하여 종속성 복잡성을 줄이는 데 기여한다.

또한, 과도한 서버리스 함수 연결과 관련된 패턴은 때때로 개별 함수 대신 네이티브 서비스 통합을 강조하는 아키텍처 전략, 즉 함수 없는 사고방식(functionless mindset)으로 해결되기도 한다. 그러나 이 접근 방식은 학습 곡선이 가파르고, 통합 제한 사항은 동일한 클라우드 공급업체 생태계 내에서도 다를 수 있다는 점이 지적된다.

 이식성 문제 
서비스형 함수 워크로드는 긴밀한 공급업체 통합으로 인한 서비스 종속성으로 인해 마이그레이션 장애물을 겪을 수 있다. 육각형 아키텍처는 워크로드 이식성을 촉진할 수 있다.

 같이 보기 
 서버리스 컴퓨팅

 각주 

분류:클라우드 플랫폼
분류:서비스형