Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Not Your Grandmother's On-Prem

Not Your Grandmother's On-Prem

The last two decades have been all about SaaS, with advantages that cannot be overstated. Except SaaS isn't always an option, nor is it always the right choice: businesses in tightly regulated industries, or where information security is paramount, for example, will not - often can not - consider any software that isn't under their control. For many software enterprises, this leads to the dreaded inevitability of on-premise deployment.

Fortunately, the situation today is dramatically different to a scant few years ago, let alone a decade or two: the same technologies that enable SaaS have also radically transformed on-prem deployment. Modern tools like Docker, Consul, ELK and Kubernetes - to name a few - can be leveraged to completely transform the experience for both customers and vendors. In this talk we'll contrast the challenges and advantages of SaaS and on-prem, see how things have evolved in recent history, and see how modern on-prem deployment can be, if not pleasurable, at least relatively painless.

Avatar for Tomer Gabel

Tomer Gabel

November 25, 2021
Tweet

More Decks by Tomer Gabel

Other Decks in Programming

Transcript

  1. T o m e r G a b e l

    Kraków, 15-17 May 2019 // Not Your Grandmother’s On-Prem T o m e r G a b e l Porto, April 28th 2022 //
  2. What’s all this, then? • “On-premise” • Used to be

    taken literally: “at the customer’s location” • This is no longer relevant • Most customers don’t own their own data center • Most customers don’t own their own hardware • Most customers don’t even lease long-term • Customers are likely running “on someone else’s prem” • A more useful interpretation: • “Running on hardware outside of my control”
  3. Let’s get it out in the open… • On-prem is

    a swear-word these days • For good reasons! • Are they, though? • It’s 2022 • Much has changed • And I’ve recently wrapped a 6-month on-prem project • Let me tell you all about it!
  4. Who or what am I? • Freelance software engineer •

    Been around the block • Up and down the stack • For a bunch of companies you’ve heard of • Old and grumpy
  5. Why is it hard? SaaS On-Prem Release process Simple Complex

    Direct control Full, in-house Limited, involving 3rd parties Concurrently-deployed versions Small, finite set Potentially many Staff In-house and cooperative 3rd party
  6. Why do this to yourself? • We all love SaaS

    • It’s the future, they said • They were right
  7. Why do this to yourself? • We all love SaaS

    • But in some cases, it’s just not an option • Regulatory concerns (e.g. medical information) • Security considerations (e.g. critical infrastructure) • Physical constraints (e.g. no internet connectivity) • And sometimes it’s not practical • When you actually sell infrastructure • When your customers simply won’t buy SaaS
  8. On the shoulders of giants • SaaS was a radical

    new paradigm 20 years ago • New tools evolved to support the ecosystem • Can we leverage these tools on-prem? Hypervisors Deploy heterogenous software in isolation Public cloud Programmable, elastic production hardware Containers Simple software packaging and distribution Container orchestrators Abstract execution environment
  9. First, a dose of reality • All on-prem projects aren’t

    created equal • What are your constraints? • Data persistence/retention Your network On-prem Your system Licensing Integrations Telemetry Persistent Storage?
  10. First, a dose of reality • All on-prem projects aren’t

    created equal • What are your constraints? • Data persistence/retention • Cluster vs single host Your network On-prem Your system You? You? You? Licensing Integrations Telemetry
  11. First, a dose of reality • All on-prem projects aren’t

    created equal • What are your constraints? • Data persistence/retention • Cluster vs single host • Cloud vs colo Your network VPC Your system Licensing Integrations Telemetry Cloud Provider Storage Identity Messaging DB
  12. First, a dose of reality • All on-prem projects aren’t

    created equal • What are your constraints? • Data persistence/retention • Cluster vs single host • Cloud vs colo • Networking Your network On-prem Your system Licensing Integrations Telemetry Persistent Storage
  13. Docker • It’s a godsend • Yeah, I know. Issues

    and nitpicks • BUT! • Consistent packaging • Consistent artifact hosting • Consistent operational model • Composes well • Reusable in all scenarios
  14. docker-compose • Multiple components, single host • Lightweight orchestration •

    Dead-simple • Doesn’t get enough credit! • Composes really well with…
  15. Virtual Machine Images • VMs are awesome: • Self-contained package

    • Consistent platform (-ish) • Consistent deployment model • Supported everywhere • Private/public cloud • Publish as VM image with marketplace offerings
  16. Container orchestration • If you have to run on multiple

    hosts… • My condolences • It’s going to be hard • Kubernetes/Nomad can help • Especially if utilizing EKS/AKS/GKE • A huge subject requiring its own talk
  17. Public cloud FTW • Do your customers run on AWS,

    Azure, GCP et al? • Awesome! You get loads built-in • Delivery mechanism (VMs) • Secure integration with customer resources (data stores etc.) • Reduced operational burden via available services • SLA and regulatory guarantees that are not your problem • Customer buy-in ahead of time!
  18. Monitoring • SaaS observability tools • Great if you can

    use them! • Trusted 3rd party services • Secure and auditable access • Low operational burden • Predictable OpEx • A much easier sell!
  19. Going oldschool • If you can’t ”call home”… • Log

    shipping is the only way to go • Experience makes for good logs • No silver bullet. Sorry! • Some mitigations • If on cloud, object store + temporary ACLs may help • Zoom/Meet/etc. “remote control” features are amazing
  20. Product X • Unfortunately defunct • But that means I

    can talk about it! • A multi-component production system • Python 3.9 • Redis cache • PostreSQL • Front-end static bundle • External integration points
  21. Constraints Customers running on public cloud (initially AWS, Azure) Completely

    isolated: no inbound or outbound traffic Deployment owned by a business analyst team • Very limited technical knowhow • Uncooperative ops department 01 02 03
  22. Choices Single host (to start with) docker-compose • Lightweight and

    works • Easy to instruct on operation • Reusable for testing VM image published on marketplace Utilizes cloud RDBMS, blob store Packer targeting CentOS 7.9 01 02 03 04 05
  23. What Worked Well • Trivial setup process • Initial VM

    deployment with a few clicks via marketplace • Fully integrated with customer’s identity/security • Trivial upgrades • Leveraging Docker tags • Little or no technical know-how required!
  24. Challenges • Ops/SRE expertise • Many disparate tools (Packer, Docker,

    systemd…) • Multiple targets (AWS/Azure) • Lots of ”glue logic” with shell scripts • Support and diagnostics • No 3rd parties allowed • No direct access to server/database/logs
  25. Takeaways • The tools that enable SaaS are a boon

    for on-prem • Public clouds make for compelling on-prem targets • VMs and Docker make deployment almost painless • Supporting on-prem is surprisingly easy with: • 3rd party observability tools (logging, APM) • Modern communication tools (Zoom et al)
  26. Not Your Grandmother’s On-Prem 1. On-prem is harder than SaaS

    2. Modern tools make it quite painless 3. Be not afraid!