Date post: | 16-Apr-2017 |
Category: |
Technology |
Upload: | tokyo-azure-meetup |
View: | 475 times |
Download: | 1 times |
Azure Update, JulyKanio Dimitrov
Main Azure Updates• VM - General availability of IaaS migration from classic to Resource
Manager
• Storage - General availability: Azure cool blob storage in Canada
• Azure Redis Cache: Preview of new administration options in Premium tier• Reboot• Schedule updates
Main Azure Updates• Azure Automation : Time zone support and daylight savings
• General availability: Always Encrypted for Azure SQL Database
• Public preview: New version of Azure Active Directory PowerShell cmdlets
• General availability: Azure ExpressRoute in additional locations• Paris, Newport/Wales, and Quebec City
Main Azure Updates• General availability: Two new Azure regions (West US 2 and West
Central US)
• General availability: SQL Server Stretch Database
• General availability: Microsoft Power BI Embedded
• General availability: Microsoft R Server for Linux virtual machines
Main Azure Updates• Microsoft introduces AppSource for SaaS business apps
• Public preview: Cortana Intelligence Suite with Bing Predicts
• General availability: Microsoft Azure IoT Hub S3 edition• 300 million messages per day
• General availability: Bing APIs in Microsoft Cognitive Services• Autosuggestion API, Spell Check API, Search API
Main Azure Updates• Preview: Microsoft R Client
• G-Series instances for Azure Virtual Machines available in Australia East
• General availability: Azure SQL Data Warehouse
• Azure App Service Authentication and Azure AD domain hints
Main Azure Updates• General availability: Service Bus Premium Messaging released to
general availability
• Azure DevTest Labs: Attach additional data disk to your lab VM
• General availability: Azure portal updates for Azure Stream Analytics:• Power BI Output• Data Lake Output• Simple Input
Introduction to Serverless Architecture
Kanio Dimitrov
About Me
Azure MVP, Architect & Advisor
Tokyo Azure Meetup Host
twitter: @azurekanio
blog: https://azurekan.wordpress.com/
Serverless Computing
Serverless computing refers to a model where the existence of servers is simply hidden from developers.
• Major shift in Cloud Computing
• Application Code Focus
• Cost Effectiveness
Microservices
Small Autonomous services that model business domain and have single responsibility
Recommendations
Inventory
Orders
Shopping Cart
Shipping
Monolithic System
Serverless Microservices
Order Microservice
GET Order
Create Order
Update Order
Remove OrderAPI
GatewayMobileClient
Serverless Principles
• Abstract completely underlying infrastructure
• Break business logic to functions
• Focus only on application code
• True auto scaling in seconds
• Integrate with external systems
Current State• AWS Lambda – market leader
• Google Cloud Functions
• Azure Functions – in Preview
• Auth0 Webtasks
• IBM OpenWhisk
Modern Ops Requirements• Engineers are responsible for the operational quality
• Software Engineers have to value operational excellence
• Software Engineers on call for their own services
• Ops skills are not optional for software engineers in 2016
• Software engineers own their systems from end to end
Modern Ops Requirements• The other side of DevOps - Software engineers need to level up at
operations
• Outsource as many ops responsibility as possible
• Build operational excellence for core business differentiators
• Aggregate metrics and graph them
DevOps requires time• Biggest obstacle to
innovation is that development times are too long
• DevOps adds to the development time
• Application builders need to manage their server infrastructure
Serverless Advantages• Rapid Development
• Truly Polyglot
• Event Driven
• Minimal Maintenance
• Very Scalable
• Pay Per Use
Serverless Disadvantages• Limited transparency
• Immature tooling (debugging and troubleshooting)
• Required security review and penetration testing guidance
• More and better documentation and best practices
• Vendor Lock-in (Huge dependency on cloud provider)
• Limits not well defined
Azure Functions
Input Code Output
• Trigger - specify what conditions cause the function to be called• Binder - specify how to get information into and out of method
parameters
Azure Functions vs Web Jobs• Web Jobs:
• + Extendable. Can run whatever you we want. Full control• - HTTP functionality requires more effort to be configured
• Functions:• + Many languages supported• + Completely managed with dynamic scaling• + Portal experience simplifies a lot development• - Host can’t be customized yet• - We are using dedicated "app" which requires additional configuration, but in long term is
advantage• - Better tooling required
Binding Integration
Time Based Processing
Azure service event processing
SaaS event processing
Serverless web application architectures
Serverless mobile backends
Real-time stream processing
Real-time bot messaging
Supported Platforms• C#• F#• JavaScript• Python• PHP• Bash• Batch• PowerShell
Demo – Hello World!
Let’s focus on C#
• .csx file – focus on writing business logic function
• Do not design classes and namespace, just Run method
• POCO classes inside the same file for data processing
Async & Cancellation Token• async keyword
• Task return type
public async static Task ProcessBlobEvent(Stream blobInput, Stream blobOutput, CancellationToken token){
await blobInput.CopyToAsync(blobOutput, 4096, token);}
Namespaces• Use using• Automatically imported:• System• System.Collections.Generic• System.IO• System.Linq• System.Net.Http• System.Threading.Tasks• Microsoft.Azure.WebJobs• Microsoft.Azure.WebJobs.Host
Framework Assemblies• Use #r "AssemblyName“• Automatically added:
• mscorlib• System• System.Core• System.Xml• System.Net.Http• Microsoft.Azure.WebJobs• Microsoft.Azure.WebJobs.Host• Microsoft.Azure.WebJobs.Extensions• System.Web.Http• System.Net.Http.Formatting
Special Case• Use only #r "AssemblyName“
• Newtonsoft.Json•Microsoft.WindowsAzure.Storage•Microsoft.ServiceBus•Microsoft.AspNet.WebHooks.Receivers•Microsoft.AspNEt.WebHooks.Common
Custom Assemblies
• Upload them to bin folder for the function:• Azure Portal• Kudu• FTP
• Reference using the file name - #r "MyAssembly.dll"
Packages• Upload project.json file to the function’s folder
• Specify NuGet packages
{ "frameworks": { "net46": { "dependencies": { "Microsoft.ProjectOxford.Face": "1.1.0" } }
} }
Configuration
• Via Environment variables
• Set on App Service Level
• Use System.Environment.GetEnvironmentVariable:• GetEnvironmentVariable(“FacialRecognitionApiKey”);
Code Reuse
• Use classes and methods defined in other .csx files in your run.csx file
• To do that, use #load directives in your run.csx file:• #load “logger.csx”
Logging
• Include a TraceWriter typed argument
• Recommended to name it log
• Don’t use Console.Write
Hosting Options
• App Service Plan
• Dynamic Service Plan• Dynamically allocated resources• Functions will run in parallel• Memory from 128 MB to 1536 MB• Limited support for App Service features
Development, Debugging & Testing• Local Development is coming
• Live debugging with Visual Studio
• Azure Storage Explorer
• HTTP Endpoints testing:• Postman, Fiddler, Browser
Scaling
• Classic App Serivce Plan scales based on set rules
• Dynamic Service plan scales independently based on traffic
•Major criteria is memory size of the execution environment
Pricing – “pay-per-user”
• Price = Memory size (in GB) x Total amount of execution time (in secs)
• Execution time – active time for all functions running inside that function app
• Unit of consumption will be GB-s (Gigabyte Seconds)
Demo – Azure Functions Scenarios
Next Tokyo Azure Meetup• Date – August, 29-th
• Time – 19:30 – 21:00
• Location – Microsoft Office
• Topic: DevOps / Azure Functions Deep Dive / Bot Framework or another topic. What is the most interesting one for you?