サーバレスマイクロサービスの実践 - モバイルアプリケーション配信サービスパッケージ

背景

アリクラウドコンピューティングの機能は完全にイベント駆動型コンピューティングのサービスを管理しています。演算機能により、あなたはインフラストラクチャサーバー、ちょうど書き込みコードやアップロードを管理する必要があります。関数の計算は、あなたのコードを実行するために、柔軟で信頼性の高い方法にリソースを計算するための準備ができて、ログ、パフォーマンスの監視、アラームなどの機能を提供しています。関数計算の手段によって、あなたはすぐに管理・運用・保守せずに、アプリケーションやサービスのいずれかのタイプを構築することができます。また、あなただけのコードが被る一切の費用を実行していないされていない、実際に有料に消費コードリソースを実行する必要があります。
buried_point
包装およびモバイルアプリケーションの配布が重要なピークユーティリティを示し、ユーザーが頻繁にして、短時間で配信リリースリソースをタイムリーに完了する必要がリソースの分散型リアルタイム保護を多数用意し、コストを削減する必要があります。ここでは、提供する楽しい私たちはより速くベースの構築を支援するためのテンプレートを計算する機能を建物の建築サーバレスパッケージ配信サービスを、運用・保守の効率、性能とコストの開発の間の良好なバランスを達成しました。

下請法では、ダウンロード/変更/アップロードは、タスク、コンピューティング/ネットワークリソースを大量に消費する必要性を消費する多くのリソースです。そして、サブタスクがリリースされた新バージョンのアプリケーションでのみ発生します、最短時間内に完了する必要があります。演算機能が実現されるためこれは、山と谷のシーンのために、明らかに使用されています。さらに重要なのは、このサービスは、弾性スケーリングと高可用性機能です。

APK下請プロフィール

apk_

その他の参照モバイルアプリケーションパッケージ配信サービス-機能は--Serverlessマイクロサービスの実践を求めます

準備:

ノードをインストールします。1.

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install 8

楽しいツールをインストール2。

npm install @alicloud/fun -g

:あなたがドッキングウィンドウ、具体的な参考資料をインストールする必要がありますので、いくつかのサブコマンドの楽しいツールは、使用済みのドッキングウィンドウかもしれ楽しいインストールのチュートリアルを

3.apkパッケージ準備

この実験では、我々はここからダウンロードすることができますAPKパッケージの例を使用しますQQ-v2.apk

下载 qq-v2.apk ,上传到自己的 oss bucket中:

apk_

快速开始:

1.通过 fun 模板生成项目骨架

使用 fun init 命令可以快捷的将本模板项目初始化到本地,执行命令 :

$ fun init -n apk https://github.com/coco-super/package-distribution-service-for-serverless
start cloning...
Cloning into '.fun-init-cache-2fc2d680-eeff-11e9-a930-6fd4d1ac6506'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 23 (delta 0), reused 18 (delta 0), pack-reused 0
Unpacking objects: 100% (23/23), done.
finish clone.
? Please input a oss bucket name? sunfeiyu
Start rendering template...
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/.funignore
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/pom.xml
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example/App.java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example/App.class
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/template.yml
finish rendering template.

其中 -n 表示要作为文件夹生成的项目名称。默认值是 fun-app。更多fun init 命令格式选项说明请参考云栖文章开发函数计算的正确姿势 —— 使用 Fun Init 初始化项目

执行 fun init后会提示:输入一个 oss 的 bucket,注意 oss Bucket 是全球唯一的,如已经被占用了,请换一个新的名称或者一个已经创建好的(已经创建好的,请确保 region 一致)。

ps: 输入的内容和 apk 包准备中提到的 oss bucket name 是同一个,本示例为:sunfeiyu

4. 编译

在模版项目的根目录下执行 fun build 命令编译:

$ fun build 
using template: template.yml
start building function dependencies without docker

building apk/apk
running task flow MavenTaskFlow
running task: MavenCompileTask
running task: MavenCopyDependencies
running task: CopyMavenArtifacts

Build Success

Built artifacts: .fun/build/artifacts
Built template: .fun/build/artifacts/template.yml

Tips for next step
======================
* Invoke Event Function: fun local invoke
* Invoke Http Function: fun local start
* Deploy Resources: fun deploy

关于 Fun build 构建函数详细请参照云栖文章 开发函数计算的正确姿势 —— 使用 Fun Build 构建函数

5.服务部署

在模版项目的的根目录下执行 fun deploy 部署到云端。

$ fun deploy
using template: .fun/build/artifacts/template.yml
using region: cn-shanghai
using accountId: ***********8320
using accessKeyId: ***********mTN4
using timeout: 60

Waiting for service apk to be deployed...
        make sure role 'aliyunfcgeneratedrole-cn-shanghai-apk' is exist
        role 'aliyunfcgeneratedrole-cn-shanghai-apk' is already exist
        attaching policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
        attached policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
        Waiting for function apk to be deployed...
                Waiting for packaging function apk code...
                The function apk has been packaged. A total of 15 files files were compressed and the final size was 3.13 MB
        function apk deploy success
service apk deploy success

6.执行函数

提供两种方式:

  1. 登陆阿里云函数计算控制台,手动执行。

_

  1. 项目根目录下 fun invoke apk 命令远端调用:
$ fun invoke apk
using template: template.yml
========= FC invoke Logs begin =========
FC Invoke Start RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6
2019-10-14 17:06:35.971 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] cmd: java -jar /code/walle-cli-all.jar put -c aliyun-fc /tmp/input.apk /tmp/output.apk
2019-10-14 17:06:36.152 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] Success!

FC Invoke End RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6

Duration: 666.13 ms, Billed Duration: 700 ms, Memory Size: 1024 MB, Max Memory Used: 254.55 MB
========= FC invoke Logs end =========

FC Invoke Result:
Success

查看结果

登陆 oss 查看已经生成新的 apk 包:

_apk_

将 oss 中 qq-v2-signed.apk 下载到本地。

查看渠道信息是否写入:

~/Downloads                                                                                                                                             ⍉
$ java -jar /Users/ellison/Downloads/walle-cli-all.jar show qq-v2-signed.apk
/Users/ellison/Downloads/qq-v2-signed.apk : {channel=aliyun-fc}

渠道信息 {channel=aliyun-fc} 已写入,成功!

参考読書

  1. 楽しい(サーバレスで楽しい)工具
  2. 楽しい初期カスタムテンプレート

アリババクラウドネイティブ懸念マイクロサービス、サーバレス、コンテナ、サービスメッシュ及び他の技術分野、クラウドネイティブ人気の技術動向を中心に、ネイティブの大規模な着陸の練習を曇らせるが、ほとんどは開発者のネイティブクラウド技術界を理解してください。」

おすすめ

転載: blog.51cto.com/13778063/2467288