guide
guide copied to clipboard
Content Contribution: Pathway to Serverless Development page
Description
Add content to the Development/Pathway to Serverless Development section of the guide.
Filename: /guide/source/dev/pathway_to_sls.md
Page/Section: Development/Pathway to Serverless Development
Contributing Author/Company: Jared Short (Trek10)
Details:
Some suggested ideas and guidance for content in this section:
Pathway to Serverless Development
Tell the story around how to get involved and get thinking on introducing serverless technologies into the organizations. Cutting through the hype and misconceptions, use personal experiences to contrast advantages and challenges.
- Migrating from a monolithic/VM centric mindset to serverless
- Starting at the periphery to introduce serverless into a larger system
- Developing a serverless application
- How is it different?
- New challenges: debugging, distributed tracing, security
- Using 3rd party services, Auth0, S3, Firebase, SNS, Kinesis
- Thoughts around scaling and performance
- Is Multi-cloud/provider practical?
- Brief look at challenges in the current state of serverless
- Cold Start
- Max. time of execution (fan-out pattern)
- No. of Invocations
- Touch upon few use cases that are relevant to the enterprises
@shortjared It was a good overall conversation with you about the content for this section. If you have any questions, feel free to ping me or add it here.
For next steps, let's get a draft outline for the content that we can review together.
Hey @shortjared, just checking if you are good on getting a draft outline out soon. If you have any questions, please let me know.
Pathway to Serverless Development
Introducing Serverless to your Projects
- Not a magic bullet, don't go all in at once with a big rewrite
- Use for new components first
Migrating from the Monolith
- Rewrite painful components one at a time, eliminating those trouble points and bottlenecks
- The best serverless app is only as good as the weakest integration point with the monolith
- Real world example: email system / metadata search
All in On Serverless
- How to think in Serverless
- Event driven architecture first
- Smaller independent systems
- Changes to the security model
- Least privelege per service / function
- Thinking in functions (consumable event producers and endpoints)
- Debugging / Tracing
- Important of meaningful logging
Serverless is Serviceful, Relying on Third Parties
- As the old adage goes, focus on what you are good at
- Use best in class utilities where you can that aren't differentiators
- Auth0, Okta, OneLogin
- Firebase, SNS, Kinesis
- S3, Imgix, Cloudinary
- CloudWatch, Datadog, IOPipe
Setting up your Teams for Success
- Dev accounts with full admin access
- At least attempt a reasonable offline dev experience (serverless-offline plugin)
- CI / CD is critical
- Real world example: multi-project single
npm start
script for React FE, Serverless BE, and DynamoDB offline
Scaling and Performance Considerations
- Concurrency limitations
- Use queues to protect weaker systems
- Cost considerations for consistent high load elements
- In mem/container caches
Should we Multi-cloud?
- Long been the sought after "holy grail"
- Possible, but very expensive, very low risk
- Multi-region on single provider is better for DR / HA
- Best practice: Abstract your integrations for easier migration path is a good compromise
The Rough Edges of Serverless
- Cold starts, concurrent invocations, black hole invocation, etc
- Databases & VPC connections
- Deployment models (blue / green? Rolling?)
Operationalizing
- What and how to monitor things
- The importance of DLQs
- Failover strategy
- Real world example: Trek10 alerting / monitoring examples
@rupakg took a first stab at this, let me know your thoughts.
@shortjared This is sweet and I love that you thought through it. I like all the sub-sections. Some of it may belong under different sections. So I will think about it and maybe suggest something.
I would say you can start on the Introducing Serverless to your Projects sub-section.