본문으로 건너뛰기

FaaS 가 프론트엔드에 가져온 것은 무엇인가?

무료2020-07-05#Front-End#Mind#FaaS#FaaS SSR#前端FaaS化#基于FaaS的SSR#端云一体化

FaaS 의 지원을 받은 프론트엔드 개발 모드는 어떻게 될까요?

一.Serverless 와 FaaS

Serverless 는 클라우드 컴퓨팅 개념이며, 서버리스 컴퓨팅 (Serverless Computing) 입니다:

Serverless suggests that the cloud user simply writes the code and leaves all the server provisioning and administration tasks to the cloud provider.

서버 관련 설정 관리 작업을 모두 클라우드 제공업체에 맡기고, 사용자는 Server(또는 클라우드 리소스) 관리에 많은 노력을 기울일 필요가 없으므로 Serverless 라고 합니다

FaaS(Function as a Service) 는 Serverless 의 핵심입니다:

Serverless 的核心是 FaaS(Function as a Service),但云平台通常还提供 Serverless 框架来满足 BaaS (Backend as a Service) 等特定应用程序要求。因此,可以简单理解为:

Serverless computing = FaaS + BaaS

클라우드 함수 (Cloud functions) 가 일반 계산을 제공하고, 특정 BaaS 제품 생태계 (예: 객체 스토리지, 데이터베이스, 메시지 메커니즘 등) 로 보완되며, 사용자는 함수 로직 구현에 집중하여 클라우드 프로그래밍을 크게 단순화합니다

마치 신비롭게 들리고, 몇 년 후에 현실이 될지 모르는 것 같지만, 실제로 오늘까지 (2020/7/5) 시장에는 이미 많은 비교적 성숙한 FaaS 제품이 있습니다

二.이미 출시된 FaaS 제품

AWS Lambda

Amazon 은 2015 년에 일찍이 AWS Lambda 서비스를 출시했습니다:

AWS Lambda - Run code without thinking about servers. Pay only for the compute time you consume.

서버 (의 관리 및 설정) 를 고려하지 않고 코드를 직접 실행하고, 사용한 계산 시간에만 대해 과금되는 클라우드 컴퓨팅 서비스 제품

즉, 개발자는 코드를 업로드하기만 하면, Lambda 가 코드 실행 및 고가용성 확장에 필요한 모든 작업을 자동으로 처리합니다:

Just upload your code and Lambda takes care of everything required to run and scale your code with high availability.

주요 애플리케이션 시나리오에는 다음이 포함됩니다:

  • 데이터 처리

  • 실시간 파일 처리: 예를 들어 썸네일 생성, 비디오 코드 변환, 로그 처리 등

  • 실시간 데이터 스트림 처리: 예를 들어 사용자 액세스 지표 추적

  • 기계 학습: 데이터를 기계 학습 모델에 입력하기 전 전처리

  • 백엔드: Web, 모바일, 사물인터넷 (IoT), 제 3 자 API 요청 처리

소규모 고객용무료 체험패키지도 제공:

알리바바 클라우드 FC

알리바바 클라우드도 FaaS 방안을 제공하며, 함수 계산 이라고 합니다:

函数计算 - 阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。借助于函数计算,您可以快速构建任何类型的应用和服务,无需管理和运维。而且,您只需要为代码实际运行所消耗的资源付费,代码未运行则不产生费用。

애플리케이션 시나리오는 다음과 같습니다:

  • 저비용 크로스보더 파일 전송: 대규모 파일 동기화

  • 파일 처리: 예를 들어 OSS 에 업로드된 파일의 압축/해제, 트랜스코딩, 워터마크 추가 등

  • 프론트엔드 CI/CD 시스템: Webhook 알림이 클라우드 함수를 트리거하고, 프론트엔드 코드 저장소를 OSS 에 업로드하고, CDN 배포

  • 로그 ETL 처리: 데이터 가공, 배송

  • 스마트 가전: 스마트 홈, App 이 날씨, 환경 지수 획득

  • 중소 사이트: 예를 들어 함수 계산 + wordpress 에 기반한 serverless 웹사이트 구축

마찬가지로 소규모 고객 (1-10 인 팀) 용 무료 패키지 제공:

그러나무료 한도는 그다지 투명하지 않으며, 향후 요금을 징수할 가능성도 배제할 수 없다

P.S.또한, 알리바바 클라우드가 제공하는 OSS 는 무료 한도가 없는 것 같습니다, 체험 시 주의 필요

텐센트 클라우드 SCF

텐센트 클라우드가 제공하는 FaaS 제품은 SCF(Serverless Cloud Function) 입니다:

云函数 SCF - 云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云 인프라上 탄력적、안전하게 코드를 실행할 수 있습니다. SCF 는 실시간 파일 처리 및 데이터 처리 등 시나리오에서 이상적인 컴퓨팅 플랫폼입니다.

주로 추진하는 4 대 애플리케이션 시나리오:

  • 실시간 파일 처리: 예를 들어 오디오/비디오 트랜스코딩

  • 데이터 ETL 처리: 빅데이터 세트의 병행 분석 처리 (ETL 은 전형적인 Extract-Transform-Load 데이터 처리 프로세스)

  • 모바일 및 Web 애플리케이션 백엔드: 클라우드 함수 형태로 백엔드 서비스 구현

  • AI 추론 예측: AI 모델이 트레이닝 완료 후, 외부에 추론 서비스 제공

월간 일정한 무료 한도 가 있다고 하지만, 그러나 외부 네트워크 출력 트래픽 은 무료가 아니므로, 체험 시 주의가 필요합니다

三.FaaS 가 프론트엔드에 가져온 것은 무엇인가?

FaaS 가 있으면, 다음이 가능합니다:

서버 등의 컴퓨팅 리소스 및 서비스의 확장성, 안정성 등의 문제를 고려하지 않고 백엔드 코드를 직접 실행할 수 있으며, 로그, 모니터링, 알람 등의 부대 시설도开箱即用

즉, 간단한 백엔드 서비스 (예: 인터페이스 집계, 데이터 오케스트레이션) 를 온라인으로 하는 데 더 이상 경험이 풍부한 전문 백엔드 엔지니어의 도움이 필요하지 않습니다:

  • 기술 스택 선택

  • 고병행 하의 확장 메커니즘 고려

  • 피크 트래픽 추정, 리소스 사전 할당 (머신 신청)

  • CI/CD 프로세스 실행

  • 모니터링, 운영 유지보수 시스템 연결

우리는 코드의 일부만 제공하면 됩니다. 클라우드 제공업체가 정성껏 연구한 FaaS 방안이 해당 프로그래밍 언어에 대응하는 기술 스택의 모범 사례를 선택하고, 내장된 확장 메커니즘에 기반하여 실제 필요에 따라 컴퓨팅 리소스를 동적으로 확장하고, 서비스를 쉽게 퍼블릭 네트워크에 배포하며, 신뢰할 수 있는 모니터링, 알람 보장을 제공합니다

FaaS 에 함수를 주면, 고가용성 서비스를 온라인으로 할 수 있습니다. (간단) 서비스 인터페이스 개발의 전문성 요구가 낮아졌고, 프론트엔드는 더 큰 발휘 공간을 얻었습니다. 다음을 포함하지만 이에 한정되지 않습니다:

  • BFF(Backend For Frontend)

  • SSR(Server-Side Rendering)

  • 엔드 클라우드 일체화 개발

BFF

Backend For Frontend (BFF)(사용자 경험 적응층) 의 이념은 이미 새롭지 않습니다:

给每种用户体验对应一个后端(one backend per user experience)

즉:

BFF 는 특정 사용자 경험용으로, 이 부분의 UI 를 구현하는 프론트엔드 팀이 구현 및 유지를 담당합니다 (즉 UI 와 대응하는 BFF 는 같은 팀이 담당)

2018 년 (심지어 그 이전) 에 이미 일부 팀은 Node.js 에 기반하여 BFF 의 탐색과 실천을 전개했으며, 프론트엔드 모듈의 개발자가 대응하는 BFF 층상의 일부 인터페이스 개발 작업을 담당하여 완료했습니다

BFF 층이 있으면, 백엔드 엔지니어는 비즈니스 영역에 집중할 수 있지만, 프론트엔드 엔지니어에게 더 높은 요구를 제기했습니다: 프론트엔드형 풀스택 엔지니어가 필요하며, BFF 층의 발전에 따라 요구는 점점 더 높아집니다 (확장성, 안정성 등)

FaaS 의 출현은 이 문제를很好地에 해결했으며, BFF 개념은 SFF(Serverless For Frontend) 로 업그레이드되었고, 전문성 요구가 비교적 높은 백엔드 서비스 프레임워크 부분을 FaaS 해결책에 캡슐화하여, BFF 중 비즈니스 로직 외의 가용성 보장 작업을 프론트엔드 엔지니어에서 클라우드 제공업체의 백엔드 영역 전문가로 이관하여, 서로 더 전문적이고 효율적이게 되었습니다

SSR

SSR(Server-Side Rendering)(서버 사이드 렌더링) 도 마찬가지로 신기한 개념은 아닙니다:

서비스 측에서 완전한 HTML 페이지를 생성

클라이언트의 이차 요청 데이터의 네트워크 오버헤드와, 뷰 템플릿의 렌더링 성능 부담을省去하고, 첫 스크린 로딩을 가속하는 데 도움이 됩니다. 그러나 SSR 도 BFF 와 유사한 문제에 직면하고 있으며, Demo 레벨의 SSR 렌더링 서비스를 시작하는 것은 어렵지 않지만, 고가용성의 SSR 렌더링 엔진��� 온라인으로 하는 것은 결코 쉽지 않습니다

FaaS 는 서비스의 고가용성 요구를 손이 닿는 곳에 있게 하고, 스테이트리스한 템플릿 렌더링 작업은 특히 클라우드 함수로 완료하는 데 적합합니다

P.S.커뮤니티에는 이미 몇 가지 Serverless Side Rendering 방안이 나타났습니다. 예를 들어 ykfe/ssr

엔드 클라우드 일체화 개발

즉 전후단 일체화 개발로, 단일 프로젝트 내에서, 프론트엔드 표시 요구를 완료할 수 있고, 데이터 서비스도搞定할 수 있습니다

이전의 PHP, Java Web 整站 개발과 어떤 차이가 있을까요? 돌고 돌아 다시 시작점으로 돌아온 것일까요?

명확히 다릅니다. 주요 차이점은 다음과 같습니다:

  • 전후단分层解耦:전후단 일체이지만, 과도하게 결합하지는 않음

  • 프론트엔드 프로젝트를 주체로 함: PHP, Java Web 이 백엔드 부분을 주체로 하는 것과는 다름

  • Web 에 한정되지 않고, 모바일 단말에서도 마찬가지로 적용

일체화는 다음에 체현됩니다:

  • 클라우드 IDE 에 기반한 일整套의 개발/디버그 환경, 매끄러운 개발 체험

  • 프론트엔드 부분에 집중하고, (거의) 백엔드 서비스의 배포, 운영 유지보수를关心할 필요가 없음

P.S.현재 FaaS+React/Vue 의 일체화 개발 프레임워크도 나타났습니다. 예를 들어 midwayjs/midway

四.장래의 가능성

미래를 향해, FaaS 는 더욱 이러한 변화를 가져올 수 있습니다:

  • 소규모 고객용 무료/저렴한 방안이 점점 더 많아짐: 예를 들어 미니프로그램 클라우드, IoT 개발 패키지 등

  • FaaS 에 기반한 Web 서비스 프레임워크와 전통적인 Web 서비스 프레임워크가 통일됨: 전통적인 Web 서비스 프레임워크에 기반한 애플리케이션을 저비용으로 이전 가능

  • SSR, CSR/NSR 등의 다른 프론트엔드 렌더링 방식 이 Web 프론트엔드 프레임워크의 설정 옵션이 됨: 다른 렌더링 모드 간에 유연하게 전환, 심지어 혼용까지 가능

  • 프론트엔드가 완전한 클라우드 연구 개발 모드로 진입: FaaS 의 보급과 BaaS 생태계의 성숙이, SSR, BFF 의 유행을 가속화하고, 프론트엔드 개발을 로컬 환경에서 클라우드 위로 끌어올립니다

당신, 준비되었습니까?

댓글

아직 댓글이 없습니다

댓글 작성