Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
52
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
190
Other Decks in Technology
See All in Technology
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
310
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
330
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
140
Sigmaで作る業務アプリ
kazushiro_honma
0
120
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
470
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
1
230
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
160
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
120
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
170
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
350
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
3
1.1k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Faster Mobile Websites
deanohume
310
32k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
Test your architecture with Archunit
thirion
2
2.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]