Radu Mihai Roman
Search Cloud Engineer
• Problem Deﬁnition
• Twitter/Salesforce RPC Stack
• Supporting Infrastructure
Logistics – Setting Up a Service
• External Reviews
• Source Control, Packaging and
• Running Environments
• Logging and Monitoring
• System of Record Integration
Microservice – A Simple Deﬁnition
Code module deployed in a stand-alone process.
Breaking Up The Monolith
• Code modularization.
• Transaction refactoring.
• Deployment/operational logistics.
Compute (Docker, Mesos/Aurora at Twitter, AWS).
Hardware provisioning automation.
Analytics stack (event collectors, time series storage, dashboards, alerts).
Log management (Splunk, ELK stack, Hadoop, Spark).
Package registry, deployment tools.
CI pipeline and tools.
Setting Up a Service
2. External Reviews
3. Source Control, Packaging and Deployment
4. Running Environments
6. Logging and Monitoring
7. System of Record Integration
Before you even start…
Setting Up a Service - Buyout
Deﬁne Scope and Lifetime
• The service has a clear scope and expectations for each planned iteration.
Get Management / Executive Sponsorship
• The service is mentioned in the long term plan, and approved by the management chain.
• The new service aligns with the team’s charter.
• Someone wants/needs your service.
Setting Up a Service – External Reviews
Internal Design Reviews
• Senior engineers review your design.
• Network and infrastructure
Legal & Compliance
• Use of 3rd party/open source software.
• Legal compliance (copyright, taxation, etc.).
• Infrastructure compliance (PCI, service agreements, etc.)
Design, Compliance, Infrastructure
Setting Up a Service – Source, Packaging & Deployment
• Build system (Maven, Bazel, Pants, Buck)
• Source versioning repository (monolithic vs. individual repo, branching).
• Package/lib versioning.
• CD/CI pipeline (automate testing and merging).
• Testing (unit, functional, integration, performance).
• Some sort of archive (zip, uber jar, container image).
• Package registry
• Rollout orchestration
• Security keys
Hello World Logistics
Setting Up a Service – Environments
Staging (w/ or w/o production traﬃc)
Public vs. Private Cloud
It worked on my machine…
Setting Up a Service – Provisioning
Hardware provisioning and automation.
Elastic compute capacity (public/private cloud).
Real-time/oﬄine services bandwidth and capacity (stream/batch event processing, etc.)
Storage - (No-)SQL, data lakes, data warehousing, analytics, indexing.
Setting Up a Service – Logging and Monitoring
• Event collectors (system and application).
• Time series and structured log storage, indexing, and querying.
• Stream and batch processing.
Setting Up a Service – System of Record Integration
• Bug Tracker
• Site Reliability
• Release Management
• On-call Paging
• Root Cause Analysis
Setting Up a Service – Production
• On-Call Playbooks.
• Deployment Dependencies.
• Patch/Rollout Procedures.