Overview
The article discusses the developer experience lessons learned from operating a serverless-like platform at Netflix. It highlights the challenges and insights gained from a dynamic scripting platform that allows developers to focus on writing adapter code without worrying about infrastructure management.
What You'll Learn
1
How to improve local development experience for serverless applications
2
Why operational tooling needs to evolve for serverless platforms
3
How to implement effective versioning and lifecycle management for deployment artifacts
4
When to leverage dynamic shared libraries for code reuse
Prerequisites & Requirements
- Understanding of serverless architecture and dynamic scripting
- Familiarity with CI/CD tools and practices(optional)
Key Questions Answered
What are the main challenges of local development in a remote runtime model?
Local development in a remote runtime model adds friction to the develop-test iterations, as scripts cannot be executed locally. This results in painful turnaround times for developers, leading to anti-patterns like excessive debug logging to avoid upload iterations.
How does Netflix ensure deployment artifacts are portable and manageable?
Netflix employs a 'build once, deploy anywhere' model for deployment artifacts, using JAR files for consistency across environments. Artifacts are addressable by name and version, allowing for easy traceability and lifecycle management.
What insights have been gained regarding code modularity and composition?
As the platform grew, the need for reusing code led to implementing dynamic shared libraries and dependency management. This allows for easy composition of loosely coupled components while providing insights into code reuse and updates.
What is the impact of increased deployment velocity on production environments?
Increased deployment velocity leads to a maintenance burden with numerous short-lived test deployments in pre-production. This can cause cold start issues and unpredictable execution latencies, making it essential to have well-defined pre-production environments.
Key Statistics & Figures
Deployment velocity in pre-production environments
10x greater
This statistic highlights the disparity between test deployments and actual production deployments, emphasizing the need for better management of pre-production resources.
Technologies & Tools
Some links below are affiliate links. We may earn a commission if you make a purchase.
Backend
Java
Used for building portable, immutable artifacts in the form of JAR files.
Tools
Docker
Helps guarantee immutability and portability by bundling system dependencies.
Key Actionable Insights
1Prioritize a first-class local development experience to reduce friction in the development process.By enhancing local development capabilities, such as live-reload and debugging, developers can iterate faster and reduce the risks associated with remote execution.
2Implement a robust versioning strategy based on semantic versioning to manage deployment artifacts effectively.This approach helps avoid custom versioning schemes and ensures that dependencies are managed consistently across environments.
3Utilize dynamic shared libraries to facilitate code reuse and maintainability.This allows for rapid composition of functions while providing insight into dependency management, which is crucial for scaling development efforts.
Common Pitfalls
1
Developers may rely on verbose debug logging as a workaround for slow upload iterations.
This practice can lead to accidental exposure of sensitive data and complicates the debugging process, highlighting the need for better local development tools.
Related Concepts
Serverless Architecture
Dynamic Scripting Platforms
CI/CD Practices
Dependency Management