Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
State of The Function DevOps London
Search
Martin Beeby
May 31, 2018
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
State of The Function DevOps London
Martin Beeby
May 31, 2018
More Decks by Martin Beeby
See All by Martin Beeby
PowerShell and AWS
thebeebs
0
50
Notingham IoT
thebeebs
0
190
Guardium Emergency Response
thebeebs
0
230
My View of Blockchain
thebeebs
0
150
A Developers View of Blockchain
thebeebs
0
200
State of The Function .Net Cambridge
thebeebs
0
230
A Developer Primer on Blockchain
thebeebs
1
170
Tinkering To Production
thebeebs
0
75
Building Web in a Container World
thebeebs
0
180
Other Decks in Technology
See All in Technology
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
610
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
920
AIに障害切り分けを全部やってもらった。 。 。 。
estie
0
260
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
150
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
130
技術・能力を向上する原理原則 #きのこセッションa #きのこ2026
bash0c7
0
140
“詰む”前に仕組みを作れ 〜技術の波に溺れないためのキャッチアップ術〜
takasyou
7
4.3k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.7k
4人目のSREはAgent
tanimuyk
0
280
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
180
自作お家AIエージェントスタックチャンFWで困っている所紹介
74th
0
130
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
980
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
450
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
210
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Transcript
Martin Beeby - @thebeebs THE FUNCTION THE STATE OF
Martin Beeby @thebeebs A small piece of code (Packaged) Deployed
to a service (Through CLI/Portal) The service create a URL endpoint for that code SERVERLESS
Martin Beeby @thebeebs Software developer Since I was 16 Joined
Oracle 6 months ago MARTIN BEEBY
Martin Beeby @thebeebs Marketing Sites Timers/ CLIs Full applications USE
CASES Single Page Applications Integration/ APIs Alexa Skills/Office Apps
Martin Beeby @thebeebs AN AVERAGE DEVELOPERS VIEW ON SERVERLESS
Martin Beeby @thebeebs THE PROBLEM 3 PLATFORMS LEARNINGS
Martin Beeby @thebeebs Mobile App Allows Lawyers to transcribe claimants
testimony Manages a Legal Case in the field LAW FIRM
Martin Beeby @thebeebs 2 minute chunks How do you slice
up audio In the right place? THE BASIC PROBLEM Speech to Text Claimant != Clementine 30 minutes transcription
Martin Beeby @thebeebs ARCHITECTURE Webhook Function: Slices Audio Python Webhook
Put Webhook Webhook R e s u l t 6 Minute Audio In 3 x 2minute Audio chunks Function: Node.js Function: Node.js
Martin Beeby @thebeebs Fast Node, Python Scale WHY SERVERLESS
Martin Beeby @thebeebs AZURE AWS LAMBDA FNPROJECT
Martin Beeby @thebeebs https://github.com/thebeebs/thestateofthefunction STATE OF THE FUNCTION
Martin Beeby @thebeebs AZURE PORTAL
Martin Beeby @thebeebs AWS PORTAL
Martin Beeby @thebeebs FN PROJECT - CLI
Martin Beeby @thebeebs LOOK AT THE CODE
Martin Beeby @thebeebs Built On the Web App Service (Currently
IIS) Using CI/CD in the same way you deploy Web App Service function.json configuration DEPLOYMENT
Martin Beeby @thebeebs Package all Files and Dependencies Into a
Zip File That can be uploaded via web portal Or upload via CLI in a CI/CD workflow DEPLOYMENT
Martin Beeby @thebeebs aws lambda create-function \ --region us-east-1 --function-name
myTestFunction --zip-file fileb://path/package.zip --role role-arn --environment Variables="{LD_LIBRARY_PATH=/usr/bin/test/lib64}" --handler index.handler --runtime nodejs6.10 --profile default LAMBDA CLI
Martin Beeby @thebeebs Fn Builds a container Or any Docker
Container can be a function I use Wercker to deploy and build containers DEPLOYMENT
Martin Beeby @thebeebs http://thebeebs.uk/deploy WERCKER
Martin Beeby @thebeebs LANGUAGES Type Service Lambda Azure Fn Node
✔ ✔ ✔ C# ✔* ✔ ✔* Python ✔ ✔* ✔ go ✔ ✔ Java ✔ ✔* ✔ ruby ✔ F# ✔ ? Batch, Bash, Powershell ✔ ? php ✔ Any Docker Container ✔
Martin Beeby @thebeebs SERVERLESS IS OFTEN EVENT DRIVEN
Martin Beeby @thebeebs Run when triggered by item being added
to a queue or container etc In and Out or Using Storage SDK from function Used in this Legal Application STORAGE TRIGGER
Martin Beeby @thebeebs BINDINGS LAMBDA Type Trigger Input Output API
Gateway ✔ AWS IoT ✔ Alexa Skills Kit ✔ Cloudwatch Events, Logs ✔ Code Commit ✔ DynamoDb ✔ Kinesis ✔ S3 ✔ SNS ✔
Martin Beeby @thebeebs BINDINGS AZURE Type Service Trigger Input Output
Schedule Azure Functions ✔ HTTP (REST or webhook) Azure Functions ✔ ✔* Blob Storage Azure Storage ✔ ✔ ✔ Events Azure Event Hubs ✔ ✔ Queues Azure Storage ✔ ✔ Tables Azure Storage ✔ ✔ Tables Azure Mobile Apps ✔ ✔ No-SQL DB Azure CosmosDB ✔ ✔ Push Notifications Azure Notification Hubs ✔ ServiceBus Queue/Topic Azure Service Bus ✔ Event Grid All the things ✔
Martin Beeby @thebeebs { "Records": [ { "eventVersion": "2.0", "eventTime":
"1970-01-01T00:00:00.000Z", "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "s3": { "configurationId": "testConfigRule", "object": { "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901", "key": "uk-EN_sample.wav", "size": 1024 }, "bucket": { "arn": "arn:aws:s3:::mybucket", "name": "voicewavfiles", "ownerIdentity": { "principalId": "EXAMPLE" } }, "s3SchemaVersion": "1.0" }, "responseElements": { "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH", "x-amz-request-id": "EXAMPLE123456789" }, "awsRegion": "us-east-1", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "eventSource": "aws:s3" } ] } Webhooks BINDINGS FNPROJECT
Martin Beeby @thebeebs fn run cat sample.lamda.payload.json | fn run
RUN
Martin Beeby @thebeebs
Martin Beeby @thebeebs fn run fn deploy –app myapp –-local
cat sample.lamda.payload.json | fn call myapp /fnProject cat sample.lamda.payload.json | cURL http://myserver/r/myapp /fnProject DEPLOY
Martin Beeby @thebeebs
Martin Beeby @thebeebs Not establishing Standards Multiple Invocation Forgetting about
devops COMMON MISTAKES Start up time - Preload Depending on Dependencies Poor Error Logging Managing Memory Long Running Tasks
Martin Beeby @thebeebs Marketing Sites Timers/ CLIs Full applications USE
CASES Single Page Applications Integration/Integration/ APIs Alexa Skills/Office Apps
Martin Beeby @thebeebs ORCHESTRATION Webhook Function: Slices Audio Webhook Put
Webhook Webhook R e s u l t
Martin Beeby @thebeebs FNPROJECT FLOW public void book1(TripReq input) {
Flow f = Flows.currentFlow(); FlowFuture<BookingRes> flightFuture = f.invokeFunction("./flight/book", input.flight, BookingRes.class); FlowFuture<BookingRes> hotelFuture = f.invokeFunction("./hotel/book", input.hotel, BookingRes.class); FlowFuture<BookingRes> carFuture = f.invokeFunction("./car/book", input.carRental, BookingRes.class); flightFuture.thenCompose( (flightRes) -> hotelFuture.thenCompose( (hotelRes) -> carFuture.whenComplete( (carRes, e) -> EmailReq.sendSuccessMail(flightRes, hotelRes, carRes) ) ) ); }
Martin Beeby @thebeebs public static async Task<object> Run(DurableOrchestrationContext ctx) {
try { var x = await ctx.CallActivityAsync<object>("F1"); var y = await ctx.CallActivityAsync<object>("F2", x); var z = await ctx.CallActivityAsync<object>("F3", y); return await ctx.CallActivityAsync<object>("F4", z); } catch (Exception) { // error handling/compensation goes here } } DURABLE FUNCTIONS
Martin Beeby @thebeebs THEBEEBS.UK/TRIAL $300 @THEBEEBS
Martin Beeby @thebeebs CONTACT MARTIN BEEBY @thebeebs https://www.thebeebs.co.uk
[email protected]