Serverless architecture is the next big shift in computing - completely abstracting the underlying infrastructure and focusing 100% on the business logic.
Today we can create applications directly in our browser and leave the decision how they are hosted and scaled to the cloud provider. Moreover, this approach give us incredible control over the granularity of our applications since most of the time we are dealing with single function at a time.
In this presentation we will cover:
• Introduce Serverless Architectures
• Talk about the advantages of Serverless Architectures
• Discuss in details in event-driven computing
• Cover common Serverless approaches
• See practical applications with Azure Functions
• Compare AWS Lambda and Azure Functions
• Talk about open source alternatives
• Explore the relation between Microservices and Serverless Architectures
2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
9. About Me
Azure MVP, Architect & Advisor
Tokyo Azure Meetup Host
twitter: @azurekanio
blog: https://azurekan.wordpress.com/
10. 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
11.
12. Microservices
Small Autonomous services that model business domain and have
single responsibility
Recommendations
Inventory
Orders
Shopping Cart
Shipping
Monolithic System
14. 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
15. Current State
• AWS Lambda – market leader
• Google Cloud Functions
• Azure Functions – in Preview
• Auth0 Webtasks
• IBM OpenWhisk
16. 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
17. 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
18. 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
19. Serverless Advantages
• Rapid Development
• Truly Polyglot
• Event Driven
• Minimal Maintenance
• Very Scalable
• Pay Per Use
20. 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
21. 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
22. 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
33. 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
37. Special Case
• Use only #r "AssemblyName“
• Newtonsoft.Json
• Microsoft.WindowsAzure.Storage
• Microsoft.ServiceBus
• Microsoft.AspNet.WebHooks.Receivers
• Microsoft.AspNEt.WebHooks.Common
38. Custom Assemblies
• Upload them to bin folder for the function:
• Azure Portal
• Kudu
• FTP
• Reference using the file name - #r "MyAssembly.dll"
40. Configuration
• Via Environment variables
• Set on App Service Level
• Use System.Environment.GetEnvironmentVariable:
• GetEnvironmentVariable(“FacialRecognitionApiKey”);
41. 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”
42. Logging
• Include a TraceWriter typed argument
• Recommended to name it log
• Don’t use Console.Write
43. 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
44. Development, Debugging & Testing
• Local Development is coming
• Live debugging with Visual Studio
• Azure Storage Explorer
• HTTP Endpoints testing:
• Postman, Fiddler, Browser
45. 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
46. 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)
48. 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?