MasterCloud
CloudFormation vs.
ElasticBeanstalk & Use cases
MasterCloud #3

(2017/07/12)
MasterCloud
Speaker Introduction
Wayland Zhang (張卓)

CEO, Founder @ Mobingi, Inc.

10 years programmer

2015年から日本在住

★★★✩✩✩✩✩✩✩
www.facebook.com/waylandzhang

www.twitter.com/waylandzhang

www.instagram.com/wayland
MasterCloud
日本語は、居酒屋語だけ!
生ふたず 枝豆 鶏皮 塩でHighball とりあえず!
Mobingi, Inc.
• ALM (Application Lifecycle Management)

• Docker Container Integrated (Docker knowledge not required)

• Open source around 2017 September
Partner Partner
MasterCloud
CloudFormation
MasterCloud
-Deployed more than 1,000 stacks
-Started to use CloudFormation since 2012
-Limit: 20 stacks per region per account
-Up to 1 hr to deploy a complicated stack
Personally, I
MasterCloud
CloudFormation
Template base (Json /Yaml)
MasterCloud
CloudFormation
Visual Designer
MasterCloud
AWS IaaS Layer
CloudFormation Storage, Compute, Networking
Application Services
CloudFormation
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
Customized Name
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
Used in reference
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
AWS Resource Type
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
Documentation:
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html
MasterCloud
{
"AWSTemplateFormatVersion" : “2010-09-09",
"Parameters" : {
"KeyName": {
"Type": "AWS::EC2::KeyPair::KeyName",
},
"InstanceType" : {
"Type" : "String",
"Default" : "t2.small"
}
},
"Resources" : {
"EC2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"InstanceType" : { "Ref" : "InstanceType" },
"ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
{ "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
"SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }],
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"VirtualName" : "ephemeral0"
}
]
}
},
"EC2SecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "SSH access",
"SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}]
}
}
},
"Outputs" : {
"Instance" : {
"Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] },
"Description" : "DNS Name of the newly created EC2 instance"
}
}
…
ec2-54-250-104-129.ap-northeast-1.compute.amazonaws.com
MasterCloud
AWSTemplateFormatVersion: “2010-09-09“
Description:
String
Metadata:
template metadata
Parameters:
set of parameters
Mappings:
set of mappings
Conditions:
set of conditions
Transform:
set of transforms
Resources:
set of resources
Outputs:
set of outputs
• Fn::And

• Fn::Equals

• Fn::If

• Fn::Not

• Fn::Or

Condition Intrinsic Functions
MasterCloud
Elastic Beanstalk
MasterCloud
ElasticBeanstalk
MasterCloud
AWS IaaS Layer
CloudFormation Storage, Compute, Networking
Application Services
CloudFormation
MasterCloud
ElasticBeanstalk
AWS IaaS Layer
CloudFormation Storage, Compute, Networking
Application ServicesElasticBeanstalk
MasterCloud
UI based configuration
MasterCloud
Monitoring
MasterCloud
Activities
MasterCloud
Logs
MasterCloud
UI
S3 EC2 Servers
Code Deploy
$ eb deploy ..
CLI
MasterCloud
CloudFormation ElasticBeanstalk
Interface Code
(Cli)
UI

(Cli)
Application
Environment
No
(EC2 AMI level only)
Yes

(php, python, NodeJS, etc..)
Layer Resource Provisioning Application Stack Deployment
Target Low-level

(system engineer)
High-level

(developers)
Difficulty ✡✡✡✡✡ ✡
MasterCloud
Other Cloud Providers?
- Resource Manager template (CF)

- App Service (≈EB)
& others
ALM
- Cloud Deployment Manager (CF)

- App Engine (≈EB)
= CF
≈ Orchestrator
= CF + EB
MasterCloud
Use cases
MasterCloud
Use case 1 : A LAMP Application
-Lightening fast
-General configuration
-In frequent update
MasterCloud
Use case 2: A multi-AZ, Load-balanced stack with extra security layer
You require:

- VPC, customized gateway ACL, 

- public subnet for EC2, private subnet for Multi-AZ RDS

- Security group (port 443,80,22,ping)

- 3 AZ for web EC2 high availability

- With customized SSL certificate

- …
MasterCloud
“Infrastructure as Code.”
MasterCloud
Infra Provision >> Configuration >> Deploy & Run >> Monitor & Secure >>
“Infrastructure as Code.”
Networking
Storage
Compute VM
OS
Softwares
Package
Environment
Git Logging
Secret management
Audit
Secure Access
“Application Automation”
“Application Lifecycle
Management”
Scaling
CD/CI
MasterCloud
Usage case 4 (SBCloud): Application Stack with Mobingi ALM
ALM template snippet:

{
"vendor": {
"alicloud": {
"cred": "*********2DZLA",
"secret": "****************DTo5",
"region": "ap-northeast-1"
}
},
"configurations": [
{
"role": "web",
"flag": "pokemon_web",
"provision": {
"instance_type": "xn1.small",
"count": 2,
"storage": {
"type": "ebs",
"size": 30,
"volume_type": "${computed}"
}
},
"container": {
"updated": "${computed}",
"image": "registry.mobingi.com/mobingi/ubuntu-apache2-php5",
"gitRepo": "https://github.com/sample/pokemon_web.git",
"gitReference": "master",
"gitPrivateKey": "-----BEGIN PRIVATE ...n-----END PRIVATE KEY-----n",
"environmentVariables": {
"my_hash": "D3nz!lwA$h1ngt0n"
}
}
}
} Releasing August, 2017
Infra Provision >>
Configuration >>
Deploy & Run >>
Monitor & Secure >>
MasterCloud
http://slack.mobingi.com

CloudFormation vs. Elastic Beanstalk & Use cases

  • 1.
    MasterCloud CloudFormation vs. ElasticBeanstalk &Use cases MasterCloud #3 (2017/07/12)
  • 2.
    MasterCloud Speaker Introduction Wayland Zhang(張卓) CEO, Founder @ Mobingi, Inc. 10 years programmer 2015年から日本在住 ★★★✩✩✩✩✩✩✩ www.facebook.com/waylandzhang www.twitter.com/waylandzhang www.instagram.com/wayland
  • 3.
  • 4.
    Mobingi, Inc. • ALM(Application Lifecycle Management) • Docker Container Integrated (Docker knowledge not required) • Open source around 2017 September Partner Partner
  • 5.
  • 6.
    MasterCloud -Deployed more than1,000 stacks -Started to use CloudFormation since 2012 -Limit: 20 stacks per region per account -Up to 1 hr to deploy a complicated stack Personally, I
  • 7.
  • 8.
  • 9.
    MasterCloud AWS IaaS Layer CloudFormationStorage, Compute, Networking Application Services CloudFormation
  • 10.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } …
  • 11.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } … Customized Name
  • 12.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } … Used in reference
  • 13.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } … AWS Resource Type
  • 14.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } … Documentation: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html
  • 15.
    MasterCloud { "AWSTemplateFormatVersion" : “2010-09-09", "Parameters": { "KeyName": { "Type": "AWS::EC2::KeyPair::KeyName", }, "InstanceType" : { "Type" : "String", "Default" : "t2.small" } }, "Resources" : { "EC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [{ "Ref" : "EC2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }, "EC2SecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "SSH access", "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation" }}] } } }, "Outputs" : { "Instance" : { "Value" : { "Fn::GetAtt" : [ "EC2Instance", "PublicDnsName" ] }, "Description" : "DNS Name of the newly created EC2 instance" } } … ec2-54-250-104-129.ap-northeast-1.compute.amazonaws.com
  • 16.
    MasterCloud AWSTemplateFormatVersion: “2010-09-09“ Description: String Metadata: template metadata Parameters: setof parameters Mappings: set of mappings Conditions: set of conditions Transform: set of transforms Resources: set of resources Outputs: set of outputs • Fn::And
 • Fn::Equals
 • Fn::If
 • Fn::Not
 • Fn::Or
 Condition Intrinsic Functions
  • 17.
  • 18.
  • 19.
    MasterCloud AWS IaaS Layer CloudFormationStorage, Compute, Networking Application Services CloudFormation
  • 20.
    MasterCloud ElasticBeanstalk AWS IaaS Layer CloudFormationStorage, Compute, Networking Application ServicesElasticBeanstalk
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    MasterCloud UI S3 EC2 Servers CodeDeploy $ eb deploy .. CLI
  • 26.
    MasterCloud CloudFormation ElasticBeanstalk Interface Code (Cli) UI
 (Cli) Application Environment No (EC2AMI level only) Yes
 (php, python, NodeJS, etc..) Layer Resource Provisioning Application Stack Deployment Target Low-level
 (system engineer) High-level
 (developers) Difficulty ✡✡✡✡✡ ✡
  • 27.
    MasterCloud Other Cloud Providers? -Resource Manager template (CF) - App Service (≈EB) & others ALM - Cloud Deployment Manager (CF) - App Engine (≈EB) = CF ≈ Orchestrator = CF + EB
  • 28.
  • 29.
    MasterCloud Use case 1: A LAMP Application -Lightening fast -General configuration -In frequent update
  • 30.
    MasterCloud Use case 2:A multi-AZ, Load-balanced stack with extra security layer You require: - VPC, customized gateway ACL, - public subnet for EC2, private subnet for Multi-AZ RDS - Security group (port 443,80,22,ping) - 3 AZ for web EC2 high availability - With customized SSL certificate - …
  • 31.
  • 32.
    MasterCloud Infra Provision >>Configuration >> Deploy & Run >> Monitor & Secure >> “Infrastructure as Code.” Networking Storage Compute VM OS Softwares Package Environment Git Logging Secret management Audit Secure Access “Application Automation” “Application Lifecycle Management” Scaling CD/CI
  • 33.
    MasterCloud Usage case 4(SBCloud): Application Stack with Mobingi ALM ALM template snippet: { "vendor": { "alicloud": { "cred": "*********2DZLA", "secret": "****************DTo5", "region": "ap-northeast-1" } }, "configurations": [ { "role": "web", "flag": "pokemon_web", "provision": { "instance_type": "xn1.small", "count": 2, "storage": { "type": "ebs", "size": 30, "volume_type": "${computed}" } }, "container": { "updated": "${computed}", "image": "registry.mobingi.com/mobingi/ubuntu-apache2-php5", "gitRepo": "https://github.com/sample/pokemon_web.git", "gitReference": "master", "gitPrivateKey": "-----BEGIN PRIVATE ...n-----END PRIVATE KEY-----n", "environmentVariables": { "my_hash": "D3nz!lwA$h1ngt0n" } } } } Releasing August, 2017 Infra Provision >> Configuration >> Deploy & Run >> Monitor & Secure >>
  • 34.