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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
51
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
76
Building Web in a Container World
thebeebs
0
180
Other Decks in Technology
See All in Technology
AI-DLC実践録_フルサイクル開発への挑戦
miyuc
0
310
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
150
AI開発に用いられるHPC技術について
gpuunite_official
0
150
Bits Agent Builder の⼊⾨と活⽤事例
nulabinc
PRO
0
250
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.3k
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
370
Kiro入門|仕様駆動開発で変わるAI時代の開発スタイル
cmkudo
0
230
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
19k
Go 1.27 の標準パッケージに uuid が入った!のでいろいろ喋る / go_127_std_go_uuid
convto
3
530
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
650
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
570
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
3
380
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Scaling GitHub
holman
464
140k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
440
Building Applications with DynamoDB
mza
96
7.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
440
Designing for humans not robots
tammielis
254
26k
ラッコキーワード サービス紹介資料
rakko
1
4.4M
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Adaptive Systems
keathley
44
3.2k
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]