2019 was the year Kubernetes became boring—in the best way. Edge computing moved from concept to implementation. The industry confronted the complexity it had created. Here’s what defined the year in technology.
Kubernetes Comes of Age
From Hype to Production
Kubernetes 1.14 through 1.17 brought stability:
- Windows container support went GA
- Custom Resource Definitions matured
- Operators became the standard pattern
- Major cloud providers achieved feature parity
The conversation shifted from “should we use Kubernetes” to “how do we use it well.”
The Complexity Tax
With maturity came acknowledgment of complexity. Running Kubernetes requires:
- Networking expertise
- Security hardening
- Monitoring infrastructure
- CI/CD pipeline integration
- On-call capability
Managed offerings (EKS, GKE, AKS) became the default recommendation. Running your own control plane requires significant justification.
Service Mesh Adoption
Istio and Linkerd gained production adoption:
- mTLS became accessible
- Traffic management simplified canary deployments
- Observability improved
- But operational complexity increased
The jury’s still out on whether service mesh complexity is worth it for most organizations.
Edge Computing Emerges
CDN as Compute Platform
Cloudflare Workers, Lambda@Edge, and Fastly Compute@Edge turned CDN PoPs into compute nodes:
- Sub-10ms latency for edge logic
- Personalization without origin round-trips
- A/B testing at the edge
- Authentication and authorization moved closer to users
Use Cases Materialized
Beyond caching:
- Dynamic content personalization
- API gateways at edge
- Real-time data transformation
- IoT data preprocessing
Edge computing found its place in the architecture toolkit.
The Great Complexity Reckoning
Microservices Skepticism
After years of enthusiasm, skepticism emerged:
- Martin Fowler’s “Monolith First” gained traction
- Distributed systems complexity became undeniable
- “Modular monolith” entered the vocabulary
- Teams questioned whether they needed microservices
The answer wasn’t abandoning microservices but being honest about tradeoffs.
Tool Fatigue
The JavaScript ecosystem’s tool churn became a talking point:
- Build tools proliferated
- State management options multiplied
- Framework choices overwhelmed
- “JavaScript fatigue” became mainstream acknowledgment
Similar patterns in DevOps: Kubernetes, service mesh, observability stacks, CI/CD pipelines—each layer adding tools.
Simplicity Movement
Counter-movements emerged:
- Basecamp’s “Majestic Monolith”
- Boring technology advocates
- “Simple Made Easy” philosophy revival
- Criticism of “resume-driven development”
Cloud Native Security
Zero Trust Adoption
Zero trust moved from concept to implementation:
- BeyondCorp inspired enterprises
- Identity-based access gained adoption
- Network perimeters questioned
- Continuous verification became standard
Container Security Matured
- Image scanning became CI/CD standard
- Runtime security tools matured
- Policy engines (OPA/Gatekeeper) gained adoption
- Supply chain security awareness increased
Major Incidents
Capital One breach highlighted cloud security challenges:
- SSRF vulnerabilities
- IAM misconfiguration
- The shared responsibility model’s gaps
- Metadata service risks
DevOps Evolution
GitOps Gained Traction
Argo CD and Flux popularized GitOps:
- Git as single source of truth
- Pull-based deployments
- Declarative infrastructure
- Audit trails built-in
Platform Engineering
Internal developer platforms became a focus:
- Paved roads for developers
- Self-service infrastructure
- Reducing cognitive load
- Platform teams as enablers
FinOps Emergence
Cloud cost management became a discipline:
- Tagging and allocation
- Reserved instance management
- Spot instance adoption
- Cost as non-functional requirement
Programming Languages
TypeScript’s Rise
TypeScript reached mainstream adoption:
- Default for new frontend projects
- Backend Node.js adoption increased
- Tooling matured
- Type safety won the argument
Rust’s Growing Presence
Rust expanded beyond systems programming:
- WebAssembly target language
- Cloud infrastructure (Firecracker)
- Performance-critical services
- “Most loved language” streak continued
Go’s Steady Growth
Go solidified its position:
- Cloud native standard
- Kubernetes ecosystem language
- CLI tool language of choice
- Generics debate continued
Industry Trends
Remote Work Expansion
Even before 2020 forced it:
- Distributed teams normalized
- Tooling for remote collaboration improved
- Office-optional policies increased
- Global talent access expanded
Open Source Sustainability
Conversations about funding open source intensified:
- Elasticsearch license change sparked debate
- GitHub Sponsors launched
- Tidelift and similar platforms emerged
- Corporate contribution expectations grew
Tech Ethics
Scrutiny of technology’s impact increased:
- AI bias concerns
- Privacy debates
- Big tech regulation discussions
- Worker organizing in tech
Looking Forward
Predictions Revisited
What we got right:
- Kubernetes dominance
- Edge computing growth
- GitOps adoption
- Complexity backlash
What surprised:
- Speed of managed Kubernetes improvement
- Service mesh remaining niche
- Serverless not replacing containers
- Monolith rehabilitation
2020 Outlook
Emerging trends to watch:
- WebAssembly beyond browsers
- Ambient computing
- Privacy-preserving computation
- Low-code/no-code platforms
- 5G applications
(Little did we know what 2020 would actually bring.)
Personal Reflections
What I Learned
- Boring technology often wins
- Operational complexity compounds
- Simple systems are undervalued
- Teams matter more than tools
What I’m Changing
- Defaulting to simpler solutions
- Investing more in observability
- Focusing on team enablement
- Questioning complexity additions
Key Takeaways
- 2019 was Kubernetes maturity year; managed services became the default
- Edge computing found its place for latency-sensitive, personalization, and gateway use cases
- Industry confronted complexity debt from microservices and tool proliferation
- Zero trust and container security moved from concept to implementation
- GitOps and platform engineering emerged as DevOps practices
- FinOps brought engineering discipline to cloud costs
- TypeScript won the type safety argument in JavaScript land
- Simplicity counter-movements emerged against complexity creep
The technology landscape in 2019 matured. The question shifted from “can we build it” to “should we build it this way.”
Here’s to learning from the past and building more thoughtfully in the future.