Make your Cloud
Applications
Function for real –
A Complete
Overview of
Oracle Functions
as a Service
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Oracle Groundbreakers Tour 2020 EMEA, 13th October
Lucas Jellema, CTO & Architect AMIS | Conclusion Sources and slides:
http://bit.ly/function-for-real-
ogbemea2020
API
Gateway
Notifications
Function
Autonomous
Database
Streaming
Object
Storage
Vault
NoSQL
Database
Autonomous
JSON
Email Delivery
AuditingMonitoringLogging
synchronous
asynchronous
Lucas Jellema
CTO for AMIS | Conclusion
Cloud Solution Architect
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
A traditional application
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
WebApp
Database
(RDBMS?)JVM
Java EE
Operating System
Hardware
3rd party libraries
& frameworks
Monolith,
Microservice,
Module
Platform & Language
runtime features
(transaction
management, HTTP
request handling, state
management & in
memory caching, IAM,
…
Custom Code
IaaS
PaaS
Cloud Native Application
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Event
Hub
Vault
Function
IAM
Container
Engine
Web
App
Function
Cache
Mail
Monitor
ScalingAlert &
Notify
• Managed
• Quick Provision &
Decommission
• Distributed
• Automated
• Pay per use/TCO
• Vendor takes runtime
responsibility
• Enterprise grade platform
accessible to startups
• Rapid Innovation
• Security & Availability
• Scale
Logging
Characteristics of Cloud Native Applications
• Modern – born in the cloud (era)
• Emphasis on interaction (and decoupling) points:
• Between custom components: APIs, Events / message format
• From custom to PaaS Services: Service APIs, Formats and Protocols
• Less emphasis on [and insulation from?] implementation of PaaS (platform) services
• Key are industry standard APIs that are implemented by many different services
• Custom code in small, simple units
• No explicit Infrastructure (serverless, software defined) & managed Platform components
• Stateless and Dynamically Scalable (Elastic) – expand and contract
• Pay per Use
• Automation – no hands on ACC and Production (speed, repeatability, dynamic adjustment)
• Infrastructure/Platform as Code & Application CI/CD [pipelines]
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
What are Functions?
• (typically small) Stateless Execution Engines that handle one request or
event
• They can do anything regular applications can do – as long as they can
do it in limited time (a few minutes max, ideally even shorter)
• Serverless: functions are deployed and executed in an abstract, fully
managed environment that automatically scales up and down (FaaS)
• DevOps teams do not need | get to configure VMs, servers, network
• Pay per execution – and per duration, memory and CPU
• Glue and worker bees in cloud environments
• For both application functionality and Ops-automation
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Function Implementation
• Implemented in any programming language –
• frequently JavaScript/Node, C#, Python, Go and Java; also shell, binary executable
• Frequently backed (visibly or implicitly) by Docker Containers
• Parametrized via Configuration Settings
• Leverage Cloud facilities
• Logging
• Monitoring
• Auditing
• Authorization
• IaaS: Compute, Network, Storage
• Container Orchestration, Container Image Registry
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Introducing Serverless Functions
• The Container Native Serverless Framwork
• Project Fn is an open source FaaS platform
that you can run anywhere -- any cloud or
on-premise.
• It implements serverless Functions through
Docker containers
• Out of the box support for many runtimes
•
• also support for custom Docker
Container (white box)
• Command Line Interface
• create, develop, deploy, invoke, inspect
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Fn Functions – request handling
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Function
Implementation
(Node, Java, Go,
Python, custom
Docker, …)
FDK
Function as a Service framework
HTTP Request
HTTP method, headers, query
parameters, url path, body
input – derived from body
ctx – raw HTTP request components
Introducing Oracle Cloud Infrastructure
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Oracle Cloud Infrastructure
• Generation 2 Cloud
• Main themes:
• Competitive Pricing
• Secure by Design
• Open
• Enterprise (Technology)
• Trials – 30 days, $300 credits
• An always-free tier
• With Autonomous Database and
Autonomous Data Warehouse
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Oracle Functions
• Functions on OCI – based on Fn
• FaaS (Project Fn)
• Interacts with container platform – run | scale | watch | …
• Is a generic open source framework that can run anywhere on Docker
• Handles request – load balance, route, provide context
• Manages application configuration settings
• Function Container Images are stored
in OCI Container (Image) Registry
• Triggers are HTTP Requests or OCI Events
• OCI gathers logs and metrics
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Quick Demo of Oracle Functions
• Create new Function (in existing App) locally
• Implement special hello world
• Deploy Function App locally
• Invoke Function App locally
• Through CLI
• Change context to OCI
• Deploy & Invoke
• Show Invocation ‘evidence’
• Metrics
• Logging
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Demo Your First Function – local Fn environment
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
fn start
Fn server
1
fn create app
hello-app
2
Fn server
Application hello-app
fn init --runtime
node hello
3
Function
hello
<edit
function hello>
4
fn deploy -app
hello-app --local
5
Function
hello
Local Docker
Container
Image Registry
hello
fn invoke hello-app
hello
6
Docker
hello
http request
Generated Function in Node
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
meta-data for Fn
SDK runtime
Implementation of
the function
Generated Function in Java
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
meta-data for Fn
SDK runtime
Implementation of
the function
Maven pom.xml with
Fn dependencies
Demo Your First Function – on OCI - preparation
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
fn create context
oci-context --
provider oracle
1
fn use context
oci-context
2
OCI Cloud Tenancy
Container
Registry
Fn client
oci-context
fn update context
oracle.compartment-id
62371…8198
3
fn api-url
https://functions.$REGION
.oci.oraclecloud.com
4
OCI Config Private Key.pem
fn context registry
<region>.ocir.io/<namespace>/
<registry-name>
5
fn update context
oracle.profile FN
6
docker login
<registry-url>
7
Docker login
Demo Your First Function – on OCI – implement, deploy, invoke
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
OCI Cloud Tenancy
Container
Registry
Fn client
oci-context
fn create app "fun-app" --annotation
"oracle.com/oci/subnetIds=["781...82"]"
8
OCI Config Private Key.pem
Docker login
Application
hello-app
Functions
Application
fn init --runtime
node hello
9
Function
hello
<edit
function hello>
fn deploy -app
hello-app
hello
fn invoke
hello-app hello
10
11
hello
12
hello
hello
httprequest
Demo Your First Function – on OCI
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Functions
Application
Demo Your First Function – on OCI
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Logical Grouping on OCI to work with Functions
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Policies
Groups
TENANCY
COMPARTMENT
Functions
Container
Registry
Application
Functions
Application
VCN
SUBNET
Mental Picture: Stateless and Serverless
FDK
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Mental Picture: Stateless and Serverless “execution engine”
FDK
Configuration
Parameters
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Mental Picture: Build Process
FDK
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
push
Operating
System
Language
Runtime
FDK
go, java8, java9, java, java11, node, python, python3.6,
python, python3.7, ruby, and kotlin
function.yaml
Mental Picture: Build & Deploy Process
FDK
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
push
Operating
System
Language
Runtime
FDK
OracleFunctionsonOCI
Deploy Function Application
Associated with Network &
Compartment
Specify max time to run and
memory shape (128, 256,
512, 1024 MB) for function
in function.yaml
function.yaml
Mental Picture and Actual Runtime
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
OracleFunctionsonOCI
Container Orchestrator
VM
Server
128 | 256 | 512 | 1024 MB Memory,
32 | 64 | 128 | 256 MB File System
File system can be read, /tmp can be written to
Configuration Parameters available as
Environment Variables
Memory
Shape, Max
Time to Run,
Configuration
Parameters
Configuration
Parameters
Mental Picture and Actual Runtime
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
OracleFunctionsonOCI
Container Orchestrator
VM
Server
Container is kept running for 10-15 minutes –
primed (hot) for handling more requests.
It is removed when it has been idle for that time.
It retains global state and file system contents
during its lifetime. Note: hold on to and reuse
expensive connections
AuditingMonitoringLogging
Configuration
Parameters
Mental Picture and Actual Runtime
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
OracleFunctionsonOCI
Container Orchestrator
VM
Server
AuditingMonitoringLogging
Mental Picture and Actual Runtime
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
OracleFunctionsonOCI
Container Orchestrator
VM
Server
AuditingMonitoringLogging
Mental Picture and Actual Runtime
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Image
Registry
OracleFunctionsonOCI
Container Orchestrator
VM A
Server 1
Container Orchestrator
VM B
Server 2
Oracle Functions starts multiple Docker
containers, up to the limit specified for
your tenancy. The default limit is 30 GB
of RAM reserved for function execution
per availability domain
AuditingMonitoringLogging
Mental picture vs Physical reality
• Stateless? One execution per instance? Serverless?
• Explore
• Cross execution state (memory)
• Multiple concurrent requests
• Lifetime of an instance
• Container details
• Function with
• Request counter (as cross execution state)
• Concurrent requests counter (and multi second delay)
• Write ‘still alive’ log messages
• Get host details (from Fn context)
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
requestCounter
concurrentRequests
lifetimeOfInstance
process.on(‘exit’,…)
console.log()
Physical Function Findings
• No concurrent request handling in a single instance
• Four concurrent requests,
four different hosts (== container instances)
• Each instance handles multiple [subsequent] requests
• State is kept in instance between requests
• Until the death of an instance
• An instance can perform some background work after a request is
responded to (13 seconds?)
• Part of pay per use?
• An instance is killed after [approximately] 10 minutes
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Pricing Oracle Functions – no use, no pay
(and even if quite a bit of use – then still no pay)
Function execution is triggered by
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
API Gateway
Notifications
Events
Healthcheck
Resource
Manager
Service
Connector
Alarming
Functions
Function execution is triggered by
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
API Gateway
Notifications
Events
Healthcheck
Resource
Manager
Service
Connector
Alarming
Functions
Ops automation
Application
App
Ops
Ops
Ops
Ops
Ops
Ops
App
App
API Gateway
• Handle HTTP calls:
• Authorize
• Route
• Map
• Transform
• Observer
• Monitor
• Audit
• Log
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
API
Gateway
Oracle Cloud Infrastructure
Any 3rd party
HTTP endpoint
Function
Stock
Any HTTP
Endpoint
on OCI
OIC
OKE
VM
…
Any
Service
Invoker
Expose private endpoints publicly
Stable (public) endpoints
Routing (verb & wildcard based)
Parameter and Header mapping
Request Policies
Rate limiting (per client & general)
CORS (for direct web client access)
Metrics Monitoring & Logging
Authentication & Validation
Transform headers & parameters
in requests & headers in responses
AuditingMonitoringLogging
API Gateway
API Gateway Configuration for public access to Function
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Leverage OCI PaaS Services and Facilities from Functions
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
API Gateway
Notifications
Functions
Autonomous
Database
Streaming
Object
Storage
Vault
NoSQL
Database
Autonomous
JSON
Email Delivery
AuditingMonitoringLogging
synchronous
asynchronous
Allow Functions to Invoke OCI APIs
through Resource Principal authorization
• Any OCI API call must be authenticated (signed) and authorized
• (Human) users can be granted permissions and can sign requests
• A function can be a resource principal – that is granted permissions (via
Dynamic Group) and gets an auto-generated key-file injected used for
signing
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Function Object
Storage
Allow Functions to Invoke OCI APIs
through Resource Principal authorization
• Any OCI API call must be authenticated (signed) and authorized
• (Human) users can be granted permissions and can sign requests
• A function can be a resource principal – that is granted permissions (via
Dynamic Group) and gets an auto-generated key-file injected used for
signing
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Function Object
Storage
pem rpst
Dynamic
group
Policy
Rule
Resource
Implement OCI Operations Task using Functions
• Requirement: longer term retention of
audit events for several different reasons,
including governance, compliance and
forensic requirements
• Audit events comprise: Audit Service
recording administrative operations and
Oracle Identity Cloud Service (IDCS)
tracking access and user management
events
• Approach: periodic extraction of security
event details from OCI services and
storing on OCI Object Storage
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
source: https://redthunder.blog/2020/10/02/simple-secure-log-retention-using-oci-services/
Functions in Cloud Native Application on OCI:
Tweets to NoSQL, Streaming & Email
Streaming
NoSQL
Database
#groundbreakerstour
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Tweets to NoSQL,
Streaming & Email
Healthcheck
Streaming
Events
Object
Storage
Notifications
API
Gate
way
NoSQL
Database
Function
Function
Write JSON
document with
Tweets
Retrieve X
minutes worth
of tweets
Store JSON
file with all
tweets in time
period Trigger
function with
event
Create
Tweet
Records
in NoSQL
Send
Tweet
Report as
email
Invoke Tweet
Aggregator every
X minutes
Cloud Event
for new
JSON file
Publish
each
Tweet to
Stream
Compartments
API/Service
Logging
Monitoring
OCIR
Expose
function to
external callers
Publish to
Notification
Topic
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
#groundbreakerstour
Vault
Get Twitter
credentials in
secure way
from vault
Functions facilitate Decoupling
Streaming
Events
Object
Storage
Notification
Topic
API
Gate
way
NoSQL
Database
Function
Function
Compartments
API/Service
Logging
Monitoring
OCIR
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
#groundbreakerstour
Vault
• Encapsulation (of
implementation)
• Run time availability
independence
• Independent release /
reconfigure
• Independence of scaling
• Volume Load
Throttling/Absorption
• Security Boundary
• Failure isolation
Automated Test of Functions
• Unit Test to verify the behavior of the code
• Implement functionality apart from FDK
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
FDK
Mock external
services
Automated Test using your favorite
language specific framework, such
as JUnit 5, Jest, pytest, …
Mock
FDK
http
Types of Tests
Testing Cloud Native Applications
ISOLATIONmore less
Unit Test
Integration Test
End to End Test
isolated sociable/ wired
Static Code
Analysis
Smoke Test/Health
Check/ Chaos Test
Types of Tests
Testing Cloud Native Applications
ISOLATIONmore less
Unit Test
Integration Test
single unit, all
dependencies
are mocked
End to End Test
isolated sociable/ wired
Unit and (most of) its internal
dependencies; external
dependenices are mocked
Some external dependencies are mocked; all
internal units are used unmocked
(aka Integration or BroadStack) test: tests
include (unmocked) external dependencies;
parts of the system can still be mocked
When used at runtime – E2E tests function
as Smoke Test/Health Check – to test
health of interactions at PaaS & IaaS level
Static Code
Analysis
Verify code quality guideline
adherence – without running any code
More:
• Speed
• Tests
• Boundary Testing
• Non-happy flows &
corner cases
• Mocks
• Maintenance
• Refactoring
Protection
• Technical
Smoke Test/Health
Check/ Chaos Test
More:
• Functional /
Specification driven
• Confidence
• Bugs caught
• Contract & Interaction
• REAL (mocks poke
holes in reality)
• Side effect
• Effort (per test)
• Execution time
Tests in full blown environment (ACC, PROD); focus
on (continuous) health – end to end availability of
connections, permissions, platform and infra
components; focus on important functional flows
Other Types and Scopes of Tests
• Integration Test
• Only mocks at the far ends of the chains
• Smoke Test/Health Check
• Live environment, no mocks
• Live test data set (with no business side effects)
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
FunctionsAPI Gateway
Smoketest
CI/CD –
from Dev through build, package, release, deploy to Ops
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Container
Registry
Resource
Manager
CLI
Continuous
Integration
Continuous Delivery Deployment
OracleFunctionsonOCI
Functions
Application
CLI
DevOps on Functions
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
AuditingMonitoringLogging
Functions
• Monitoring
• Metrics on Number | Duration | Status
of Function calls - per time window
• Alarms on special conditions – causing notifications to be sent
• Logging
• Application Logging from Function is captured by
OCI Logging Service and can be explored and processed
• Auditing
• Management activities regarding functions are captured
by Audit Service (who, when, what, with which function)
• Application Configuration Settings
• By (re)defining Configuration Settings on
application or function can the run time behavior
of the function be influenced
Logging
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Monitoring | Health Checks
• Verify through the eyes of an external client
if endpoints are available
and respond quick and well
• Periodic or Adhoc call to an endpoint
• HTTP(S) or Ping
• Specify Headers
• Specify Interval (check frequency)
• From selected Vantage Points
• 3rd party clouds, geographic locations around the world
• Health Check results can be inspected through the Monitor in the Console
• Use health checks for live function smoke tests
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Functions
Healthcheck
API Gateway
[tricks for] Scheduling Functions
• OCI does not currently have a way to schedule jobs
• Health Checks are scheduled, periodic HTTP(S) requests
• Once every 30 | 60 seconds or 5 | 10 | 15 minutes
• Monitoring Alarms are evaluated and repeated on the
indicated specific interval
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Functions
Healthcheck
API Gateway
Configuration
Parameters
CRON expression to run
once every hour | day |
Sunday | …
When triggered evaluate
CRON expression and
decide whether to run
CRON expression passed as
header or parameter in
healthcheck configuration
Notifications
Alarming
Monitoring
Define an Alarm that will be
triggered; set repeat interval at
desired function execution interval
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Get going with Functions on OCI
katacoda.com/redexpertalliance/courses/oci-course
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Functions vs Containers vs VMs
• Serverless
• No IaaS DevOpS
• Stepless Pay per use
• Free-Tier
• Auto-Scale
• Automatic Fail Over
• Integration with OCI
• Triggered by OCI
• Call OCI services
• Leverage OCI for
Audit, Log, Monitor
• Restricted, simple
programming model
• Short running
Functions Containers on OKE
• Serverless runtime
• Initial IaaS Setup
• Pay per VM,
scale per VM
• Auto-Scale by K8S
• Some auto Fail Over
• Little integration with OCI
• Kubernetes for Ops
• Flexible programming
model – any container goes
VMs
• Fully Servered
• DIY IaaS Op
• Pay per VM, scale per
VM, cheap at large scale
• Manual Scaling
• Manual Fail Over
• Little integration with OCI
•
• Flexible programming
model
Virtual
Machine
Functions Container Engine
For Kubernetes
Oracle Functions - Points for improvement
• Function to Function invocation could be much simpler
• Simple Fn SDK call instead of complex OCI API call
• Automatic tracing of function calls
• Asynchronous mechanism for function triggering
• OCI Streaming does not trigger function execution
• OCI Notification Topics are capped at 60 messages
per minute
• OCI API Gateway only handles synchronous requests
– not fire & forget
• Function orchestration or coordination
• Workflow, parallel execution, transaction handling
(Saga pattern)
• Project Fn is showing hardly any activity on GitHub
• Is it alive? Does it have a future?
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Functions are crucial part and great example of cloud native
• Serverless in all the good ways
• Simple and cheap
• Freedom of implementation – little lockin
• Rapid start
• Easy to get started with
• Native fit with OCI
• Leverage FaaS, invoke and triggered by PaaS, automated Ops (OCI worker bees)
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
Cloud Native:
Platform Services
Managed
Quick Provision & Decommission
Distributed
Automated
Pay per use/TCO
Vendor takes runtime responsibility
Enterprise grade platform for all
Security & Availability
Scale
Ops facilities (monitor, log, failover)
Rapid Innovation (new services, new
features, new pricing)
Functions
Thank you
for your attention
I hope
this was
useful
Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
lucas.jellema@amis.nl | technology.amis.nl | @lucasjellema | lucas-jellema
Sources and slides:
http://bit.ly/function-for-real-
ogbemea2020

Make your Cloud Applications Function for real – A Complete Overview of Oracle Functions as a Service (Oracle Groundbreakers EMEA Virtual Tour 2020)

  • 1.
    Make your Cloud Applications Functionfor real – A Complete Overview of Oracle Functions as a Service Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Oracle Groundbreakers Tour 2020 EMEA, 13th October Lucas Jellema, CTO & Architect AMIS | Conclusion Sources and slides: http://bit.ly/function-for-real- ogbemea2020 API Gateway Notifications Function Autonomous Database Streaming Object Storage Vault NoSQL Database Autonomous JSON Email Delivery AuditingMonitoringLogging synchronous asynchronous
  • 2.
    Lucas Jellema CTO forAMIS | Conclusion Cloud Solution Architect Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real [email protected] | technology.amis.nl | @lucasjellema | lucas-jellema
  • 3.
    A traditional application OracleGroundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real WebApp Database (RDBMS?)JVM Java EE Operating System Hardware 3rd party libraries & frameworks Monolith, Microservice, Module Platform & Language runtime features (transaction management, HTTP request handling, state management & in memory caching, IAM, … Custom Code
  • 4.
    IaaS PaaS Cloud Native Application OracleGroundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Event Hub Vault Function IAM Container Engine Web App Function Cache Mail Monitor ScalingAlert & Notify • Managed • Quick Provision & Decommission • Distributed • Automated • Pay per use/TCO • Vendor takes runtime responsibility • Enterprise grade platform accessible to startups • Rapid Innovation • Security & Availability • Scale Logging
  • 5.
    Characteristics of CloudNative Applications • Modern – born in the cloud (era) • Emphasis on interaction (and decoupling) points: • Between custom components: APIs, Events / message format • From custom to PaaS Services: Service APIs, Formats and Protocols • Less emphasis on [and insulation from?] implementation of PaaS (platform) services • Key are industry standard APIs that are implemented by many different services • Custom code in small, simple units • No explicit Infrastructure (serverless, software defined) & managed Platform components • Stateless and Dynamically Scalable (Elastic) – expand and contract • Pay per Use • Automation – no hands on ACC and Production (speed, repeatability, dynamic adjustment) • Infrastructure/Platform as Code & Application CI/CD [pipelines] Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 6.
    What are Functions? •(typically small) Stateless Execution Engines that handle one request or event • They can do anything regular applications can do – as long as they can do it in limited time (a few minutes max, ideally even shorter) • Serverless: functions are deployed and executed in an abstract, fully managed environment that automatically scales up and down (FaaS) • DevOps teams do not need | get to configure VMs, servers, network • Pay per execution – and per duration, memory and CPU • Glue and worker bees in cloud environments • For both application functionality and Ops-automation Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 7.
    Function Implementation • Implementedin any programming language – • frequently JavaScript/Node, C#, Python, Go and Java; also shell, binary executable • Frequently backed (visibly or implicitly) by Docker Containers • Parametrized via Configuration Settings • Leverage Cloud facilities • Logging • Monitoring • Auditing • Authorization • IaaS: Compute, Network, Storage • Container Orchestration, Container Image Registry Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 8.
    Introducing Serverless Functions •The Container Native Serverless Framwork • Project Fn is an open source FaaS platform that you can run anywhere -- any cloud or on-premise. • It implements serverless Functions through Docker containers • Out of the box support for many runtimes • • also support for custom Docker Container (white box) • Command Line Interface • create, develop, deploy, invoke, inspect Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 9.
    Fn Functions –request handling Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Function Implementation (Node, Java, Go, Python, custom Docker, …) FDK Function as a Service framework HTTP Request HTTP method, headers, query parameters, url path, body input – derived from body ctx – raw HTTP request components
  • 10.
    Introducing Oracle CloudInfrastructure Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 11.
    Oracle Cloud Infrastructure •Generation 2 Cloud • Main themes: • Competitive Pricing • Secure by Design • Open • Enterprise (Technology) • Trials – 30 days, $300 credits • An always-free tier • With Autonomous Database and Autonomous Data Warehouse Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 12.
    Oracle Functions • Functionson OCI – based on Fn • FaaS (Project Fn) • Interacts with container platform – run | scale | watch | … • Is a generic open source framework that can run anywhere on Docker • Handles request – load balance, route, provide context • Manages application configuration settings • Function Container Images are stored in OCI Container (Image) Registry • Triggers are HTTP Requests or OCI Events • OCI gathers logs and metrics Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 13.
    Quick Demo ofOracle Functions • Create new Function (in existing App) locally • Implement special hello world • Deploy Function App locally • Invoke Function App locally • Through CLI • Change context to OCI • Deploy & Invoke • Show Invocation ‘evidence’ • Metrics • Logging Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 14.
    Demo Your FirstFunction – local Fn environment Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real fn start Fn server 1 fn create app hello-app 2 Fn server Application hello-app fn init --runtime node hello 3 Function hello <edit function hello> 4 fn deploy -app hello-app --local 5 Function hello Local Docker Container Image Registry hello fn invoke hello-app hello 6 Docker hello http request
  • 15.
    Generated Function inNode Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real meta-data for Fn SDK runtime Implementation of the function
  • 16.
    Generated Function inJava Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real meta-data for Fn SDK runtime Implementation of the function Maven pom.xml with Fn dependencies
  • 17.
    Demo Your FirstFunction – on OCI - preparation Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real fn create context oci-context -- provider oracle 1 fn use context oci-context 2 OCI Cloud Tenancy Container Registry Fn client oci-context fn update context oracle.compartment-id 62371…8198 3 fn api-url https://functions.$REGION .oci.oraclecloud.com 4 OCI Config Private Key.pem fn context registry <region>.ocir.io/<namespace>/ <registry-name> 5 fn update context oracle.profile FN 6 docker login <registry-url> 7 Docker login
  • 18.
    Demo Your FirstFunction – on OCI – implement, deploy, invoke Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real OCI Cloud Tenancy Container Registry Fn client oci-context fn create app "fun-app" --annotation "oracle.com/oci/subnetIds=["781...82"]" 8 OCI Config Private Key.pem Docker login Application hello-app Functions Application fn init --runtime node hello 9 Function hello <edit function hello> fn deploy -app hello-app hello fn invoke hello-app hello 10 11 hello 12 hello hello httprequest
  • 19.
    Demo Your FirstFunction – on OCI Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Functions Application
  • 20.
    Demo Your FirstFunction – on OCI Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 21.
    Logical Grouping onOCI to work with Functions Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Policies Groups TENANCY COMPARTMENT Functions Container Registry Application Functions Application VCN SUBNET
  • 22.
    Mental Picture: Statelessand Serverless FDK Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 23.
    Mental Picture: Statelessand Serverless “execution engine” FDK Configuration Parameters Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 24.
    Mental Picture: BuildProcess FDK Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry push Operating System Language Runtime FDK go, java8, java9, java, java11, node, python, python3.6, python, python3.7, ruby, and kotlin function.yaml
  • 25.
    Mental Picture: Build& Deploy Process FDK Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry push Operating System Language Runtime FDK OracleFunctionsonOCI Deploy Function Application Associated with Network & Compartment Specify max time to run and memory shape (128, 256, 512, 1024 MB) for function in function.yaml function.yaml
  • 26.
    Mental Picture andActual Runtime Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry OracleFunctionsonOCI Container Orchestrator VM Server 128 | 256 | 512 | 1024 MB Memory, 32 | 64 | 128 | 256 MB File System File system can be read, /tmp can be written to Configuration Parameters available as Environment Variables Memory Shape, Max Time to Run, Configuration Parameters Configuration Parameters
  • 27.
    Mental Picture andActual Runtime Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry OracleFunctionsonOCI Container Orchestrator VM Server Container is kept running for 10-15 minutes – primed (hot) for handling more requests. It is removed when it has been idle for that time. It retains global state and file system contents during its lifetime. Note: hold on to and reuse expensive connections AuditingMonitoringLogging Configuration Parameters
  • 28.
    Mental Picture andActual Runtime Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry OracleFunctionsonOCI Container Orchestrator VM Server AuditingMonitoringLogging
  • 29.
    Mental Picture andActual Runtime Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry OracleFunctionsonOCI Container Orchestrator VM Server AuditingMonitoringLogging
  • 30.
    Mental Picture andActual Runtime Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Image Registry OracleFunctionsonOCI Container Orchestrator VM A Server 1 Container Orchestrator VM B Server 2 Oracle Functions starts multiple Docker containers, up to the limit specified for your tenancy. The default limit is 30 GB of RAM reserved for function execution per availability domain AuditingMonitoringLogging
  • 31.
    Mental picture vsPhysical reality • Stateless? One execution per instance? Serverless? • Explore • Cross execution state (memory) • Multiple concurrent requests • Lifetime of an instance • Container details • Function with • Request counter (as cross execution state) • Concurrent requests counter (and multi second delay) • Write ‘still alive’ log messages • Get host details (from Fn context) Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real requestCounter concurrentRequests lifetimeOfInstance process.on(‘exit’,…) console.log()
  • 32.
    Physical Function Findings •No concurrent request handling in a single instance • Four concurrent requests, four different hosts (== container instances) • Each instance handles multiple [subsequent] requests • State is kept in instance between requests • Until the death of an instance • An instance can perform some background work after a request is responded to (13 seconds?) • Part of pay per use? • An instance is killed after [approximately] 10 minutes Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 33.
    Oracle Groundbreakers Tour2020 EMEA | Make your Cloud Applications Function for real Pricing Oracle Functions – no use, no pay (and even if quite a bit of use – then still no pay)
  • 34.
    Function execution istriggered by Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real API Gateway Notifications Events Healthcheck Resource Manager Service Connector Alarming Functions
  • 35.
    Function execution istriggered by Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real API Gateway Notifications Events Healthcheck Resource Manager Service Connector Alarming Functions Ops automation Application App Ops Ops Ops Ops Ops Ops App App
  • 36.
    API Gateway • HandleHTTP calls: • Authorize • Route • Map • Transform • Observer • Monitor • Audit • Log Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real API Gateway Oracle Cloud Infrastructure Any 3rd party HTTP endpoint Function Stock Any HTTP Endpoint on OCI OIC OKE VM … Any Service Invoker Expose private endpoints publicly Stable (public) endpoints Routing (verb & wildcard based) Parameter and Header mapping Request Policies Rate limiting (per client & general) CORS (for direct web client access) Metrics Monitoring & Logging Authentication & Validation Transform headers & parameters in requests & headers in responses AuditingMonitoringLogging API Gateway
  • 37.
    API Gateway Configurationfor public access to Function Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 38.
    Leverage OCI PaaSServices and Facilities from Functions Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real API Gateway Notifications Functions Autonomous Database Streaming Object Storage Vault NoSQL Database Autonomous JSON Email Delivery AuditingMonitoringLogging synchronous asynchronous
  • 39.
    Allow Functions toInvoke OCI APIs through Resource Principal authorization • Any OCI API call must be authenticated (signed) and authorized • (Human) users can be granted permissions and can sign requests • A function can be a resource principal – that is granted permissions (via Dynamic Group) and gets an auto-generated key-file injected used for signing Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Function Object Storage
  • 40.
    Allow Functions toInvoke OCI APIs through Resource Principal authorization • Any OCI API call must be authenticated (signed) and authorized • (Human) users can be granted permissions and can sign requests • A function can be a resource principal – that is granted permissions (via Dynamic Group) and gets an auto-generated key-file injected used for signing Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Function Object Storage pem rpst Dynamic group Policy Rule Resource
  • 41.
    Implement OCI OperationsTask using Functions • Requirement: longer term retention of audit events for several different reasons, including governance, compliance and forensic requirements • Audit events comprise: Audit Service recording administrative operations and Oracle Identity Cloud Service (IDCS) tracking access and user management events • Approach: periodic extraction of security event details from OCI services and storing on OCI Object Storage Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real source: https://redthunder.blog/2020/10/02/simple-secure-log-retention-using-oci-services/
  • 42.
    Functions in CloudNative Application on OCI: Tweets to NoSQL, Streaming & Email Streaming NoSQL Database #groundbreakerstour Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 43.
    Tweets to NoSQL, Streaming& Email Healthcheck Streaming Events Object Storage Notifications API Gate way NoSQL Database Function Function Write JSON document with Tweets Retrieve X minutes worth of tweets Store JSON file with all tweets in time period Trigger function with event Create Tweet Records in NoSQL Send Tweet Report as email Invoke Tweet Aggregator every X minutes Cloud Event for new JSON file Publish each Tweet to Stream Compartments API/Service Logging Monitoring OCIR Expose function to external callers Publish to Notification Topic Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real #groundbreakerstour Vault Get Twitter credentials in secure way from vault
  • 44.
    Functions facilitate Decoupling Streaming Events Object Storage Notification Topic API Gate way NoSQL Database Function Function Compartments API/Service Logging Monitoring OCIR OracleGroundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real #groundbreakerstour Vault • Encapsulation (of implementation) • Run time availability independence • Independent release / reconfigure • Independence of scaling • Volume Load Throttling/Absorption • Security Boundary • Failure isolation
  • 45.
    Automated Test ofFunctions • Unit Test to verify the behavior of the code • Implement functionality apart from FDK Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real FDK Mock external services Automated Test using your favorite language specific framework, such as JUnit 5, Jest, pytest, … Mock FDK http
  • 46.
    Types of Tests TestingCloud Native Applications ISOLATIONmore less Unit Test Integration Test End to End Test isolated sociable/ wired Static Code Analysis Smoke Test/Health Check/ Chaos Test
  • 47.
    Types of Tests TestingCloud Native Applications ISOLATIONmore less Unit Test Integration Test single unit, all dependencies are mocked End to End Test isolated sociable/ wired Unit and (most of) its internal dependencies; external dependenices are mocked Some external dependencies are mocked; all internal units are used unmocked (aka Integration or BroadStack) test: tests include (unmocked) external dependencies; parts of the system can still be mocked When used at runtime – E2E tests function as Smoke Test/Health Check – to test health of interactions at PaaS & IaaS level Static Code Analysis Verify code quality guideline adherence – without running any code More: • Speed • Tests • Boundary Testing • Non-happy flows & corner cases • Mocks • Maintenance • Refactoring Protection • Technical Smoke Test/Health Check/ Chaos Test More: • Functional / Specification driven • Confidence • Bugs caught • Contract & Interaction • REAL (mocks poke holes in reality) • Side effect • Effort (per test) • Execution time Tests in full blown environment (ACC, PROD); focus on (continuous) health – end to end availability of connections, permissions, platform and infra components; focus on important functional flows
  • 48.
    Other Types andScopes of Tests • Integration Test • Only mocks at the far ends of the chains • Smoke Test/Health Check • Live environment, no mocks • Live test data set (with no business side effects) Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real FunctionsAPI Gateway Smoketest
  • 49.
    CI/CD – from Devthrough build, package, release, deploy to Ops Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Container Registry Resource Manager CLI Continuous Integration Continuous Delivery Deployment OracleFunctionsonOCI Functions Application CLI
  • 50.
    DevOps on Functions OracleGroundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real AuditingMonitoringLogging Functions • Monitoring • Metrics on Number | Duration | Status of Function calls - per time window • Alarms on special conditions – causing notifications to be sent • Logging • Application Logging from Function is captured by OCI Logging Service and can be explored and processed • Auditing • Management activities regarding functions are captured by Audit Service (who, when, what, with which function) • Application Configuration Settings • By (re)defining Configuration Settings on application or function can the run time behavior of the function be influenced
  • 51.
    Logging Oracle Groundbreakers Tour2020 EMEA | Make your Cloud Applications Function for real
  • 52.
    Monitoring | HealthChecks • Verify through the eyes of an external client if endpoints are available and respond quick and well • Periodic or Adhoc call to an endpoint • HTTP(S) or Ping • Specify Headers • Specify Interval (check frequency) • From selected Vantage Points • 3rd party clouds, geographic locations around the world • Health Check results can be inspected through the Monitor in the Console • Use health checks for live function smoke tests Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Functions Healthcheck API Gateway
  • 53.
    [tricks for] SchedulingFunctions • OCI does not currently have a way to schedule jobs • Health Checks are scheduled, periodic HTTP(S) requests • Once every 30 | 60 seconds or 5 | 10 | 15 minutes • Monitoring Alarms are evaluated and repeated on the indicated specific interval Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Functions Healthcheck API Gateway Configuration Parameters CRON expression to run once every hour | day | Sunday | … When triggered evaluate CRON expression and decide whether to run CRON expression passed as header or parameter in healthcheck configuration Notifications Alarming Monitoring Define an Alarm that will be triggered; set repeat interval at desired function execution interval
  • 54.
    Oracle Groundbreakers Tour2020 EMEA | Make your Cloud Applications Function for real Get going with Functions on OCI katacoda.com/redexpertalliance/courses/oci-course
  • 55.
    Oracle Groundbreakers Tour2020 EMEA | Make your Cloud Applications Function for real Functions vs Containers vs VMs • Serverless • No IaaS DevOpS • Stepless Pay per use • Free-Tier • Auto-Scale • Automatic Fail Over • Integration with OCI • Triggered by OCI • Call OCI services • Leverage OCI for Audit, Log, Monitor • Restricted, simple programming model • Short running Functions Containers on OKE • Serverless runtime • Initial IaaS Setup • Pay per VM, scale per VM • Auto-Scale by K8S • Some auto Fail Over • Little integration with OCI • Kubernetes for Ops • Flexible programming model – any container goes VMs • Fully Servered • DIY IaaS Op • Pay per VM, scale per VM, cheap at large scale • Manual Scaling • Manual Fail Over • Little integration with OCI • • Flexible programming model Virtual Machine Functions Container Engine For Kubernetes
  • 56.
    Oracle Functions -Points for improvement • Function to Function invocation could be much simpler • Simple Fn SDK call instead of complex OCI API call • Automatic tracing of function calls • Asynchronous mechanism for function triggering • OCI Streaming does not trigger function execution • OCI Notification Topics are capped at 60 messages per minute • OCI API Gateway only handles synchronous requests – not fire & forget • Function orchestration or coordination • Workflow, parallel execution, transaction handling (Saga pattern) • Project Fn is showing hardly any activity on GitHub • Is it alive? Does it have a future? Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real
  • 57.
    Functions are crucialpart and great example of cloud native • Serverless in all the good ways • Simple and cheap • Freedom of implementation – little lockin • Rapid start • Easy to get started with • Native fit with OCI • Leverage FaaS, invoke and triggered by PaaS, automated Ops (OCI worker bees) Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real Cloud Native: Platform Services Managed Quick Provision & Decommission Distributed Automated Pay per use/TCO Vendor takes runtime responsibility Enterprise grade platform for all Security & Availability Scale Ops facilities (monitor, log, failover) Rapid Innovation (new services, new features, new pricing) Functions
  • 58.
    Thank you for yourattention I hope this was useful Oracle Groundbreakers Tour 2020 EMEA | Make your Cloud Applications Function for real [email protected] | technology.amis.nl | @lucasjellema | lucas-jellema Sources and slides: http://bit.ly/function-for-real- ogbemea2020

Editor's Notes

  • #2 Pitch: Functions are what make cloud native applications tick. They execute business logic, handle requests and events, stitch together managed PaaS Services and automate Ops activities. In 45 minutes, get a complete overview of serverless Oracle Functions on OCI; how to develop, test, deploy, invoke and operate them Abstract: Functions are what make cloud native applications tick. They execute business logic, handle requests and events, stitch together managed PaaS Services and automate Ops activities. Functions allow and actually strongly suggest a clean application design with decoupled, encapsulated, independently testable, scalable and evolvable mini-applications that are suitable for highly automated operations.  Oracle Functions - based on Project Fn - are at the heart of cloud native applications on Oracle Cloud Infrastructure. They are implemented in almost any programming language and are run on a virtually serverless platform. This session provides a complete overview of Oracle Functions, including several live demonstrations. You will see local development of Functions in several languages, learn about automated testing of Functions and about deployment to the OCI tenancy (from CLI, Terraform and Pipeline). Functions can be invoked in several ways: direct call, through API Gateway request, triggered by Notifications and Cloud Events and indirectly time scheduled; these are discussed and shown.  Functions are configured with runtime settings, can read secrets (such as credentials and connection details) from the Vault service and can make use of other OCI Services, for example for persisting data (Autonomous Database, MySQL, NoSQL Database, Autonomous JSON), publishing messages to a stream, read or write a file or invoke another function, synchronously or asynchronously. The OCI Logging and Monitoring Services are demonstrated to support *Ops* on the Functions.  In 45 minutes, get a complete overview of serverless Oracle Functions on OCI; see how to develop, test, deploy, invoke and operate them. And embrace them as the essential cogs in your Oracle Cloud machinery.  Notes: This session touches upon a substantial number of OCI services - all from the perspective of the Functions service. All interaction points between Functions and the OCI portfolio are discussed. Implementation of Functions is demonstrated - as well as test/deployment/invocation (and effects) and monitoring. I have worked with Project Fn and Oracle Functions from the first time it became available. I have published many articles, Katacoda scenarios and webinars on the subject. I discuss Functions both from the perspective of an architect as well as a developer.
  • #5 Out of the box PaaS services and facilities persistence, routing/throttling/buffer/queue/retry IDM, key mgt, encryption/decryption Distribution, CDN, regional failover Monitor, log, alert/notification Scalability (up & down) Quick Rampup Emphasis on interaction points: APIs, Events/ message format Less emphasis on implementation of PaaS (platform) services MongoDB API – implemented by Azure Cosmos DB, MongoDB, Minimongo and AWS Document DB and soon Oracle Autonomous JSON Kafka API – Azure Event Hub, OCI Streaming, AWS Managed Streaming JDBC/SQL – Relational Database (Oracle, SQL Server, PostgreSQL, MySQL) and even NoSQL (Oracle NoSQL, Cassandra, Hadoop)
  • #26 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #27 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #28 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #29 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #30 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #31 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #32 Additional settings: max time to run (<= 120 seconds) Note: size of local file system is related to memory shape (32, 64, 128, 256MB) as is the number of files
  • #33 https://stackoverflow.com/questions/14031763/doing-a-cleanup-action-just-before-node-js-exits function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function delayedGreeting() { console.log("Hello"); await sleep(2000); console.log("World!"); }
  • #34 https://technology.amis.nl/2020/01/12/somewhat-stateful-serverless-functions-on-oracle-cloud-infrastructure-implementing-a-diy-cache/
  • #44 https://redthunder.blog/2020/10/02/simple-secure-log-retention-using-oci-services/ https://github.com/CallanHP/idcs-log-to-obj-store