A presentation at DevConf in in Kraków, Poland by Philipp Krenn
Se7en Deployment Sins Philipp Krenn @xeraa
Developer
It depends...
1997: “Hello World!” 2017: “Cloud Native Distributed Containerized RESTful microservice based on ARMv7 w/ k8s Hello World! as a service.” — https://twitter.com/shanselman/status/923721516117778432
Gluttony is the overindulgence and overconsumption of anything to the point of waste.
Memory, Disk, Network
Windows 95 was 30Mb. Today we have web pages heavier than that! Windows 10 is 4Gb, which is 133 times as big. But is it 133 times as superior?
Google keyboard app routinely eats 150 Mb. Is an app that draws 30 keys on a screen really five times more complex than the whole Windows 95? — http://tonsky.me/blog/disenchantment/
"Windows 95 was 30 MB" is such an ignorant, obnoxious, trite take. a triple buffered framebuffer (which you want for smooth scrolling) for my 4K display is 70 MB in pixels alone. Obviously a complete webpage with precomposed textures would take more. — https://twitter.com/whitequark/status/1043747987342671872
640K ought to be enough for anybody
The JS Drinking Game: 1. Think of a noun. 2. Google "<noun>.js" 3. If a libary with that name exists, drink! #JavaScript #code — https://twitter.com/_ericelliott/status/ 746427779525279744
Microservices Nano, Pico, Femto, Atto, Yocto
Don’t forget - having legacy software is often a sign of success. Your business was successful to last long enough for your software to become legacy. — https://twitter.com/samnewman/status/ 929622273065136130
Microservices help if too many people too many dependencies not scalable
Will this solve all your problems?
Reminder: if you're building microservices, you're building a distributed system. That means, among other things,
each service has to be independently testable and deployable (including to your dev environment) and should degrade gracefully if it cannot reach its dependencies. — https://twitter.com/jezhumble/status/ 1021897540445196288
Sun Microsystems 8 fallacies of distributed computing
Jeff Hodges Notes on Distributed Systems for Young Bloods https://www.somethingsimilar.com/2013/01/14/noteson-distributed-systems-for-young-bloods/
The Five Nines Is it resilient? Nein. Is it available? Nein. Is it scalable? Nein. Is it reliable? Nein. Does it work? Nein. — https://twitter.com/marcvolovic/status/ 898022815668088832
At this point it would be easier if you told us when it DID work. — https://twitter.com/honest_update/status/ 930128629677416450
SOA done right?
SOAP: Simple Object Access Protocol. Except it's not Simple, it's Complicated. And it's not about Objects, it's about RPC. So really: CRAP — https://twitter.com/joewalnes/status/563691487586549761
We replaced our monolith with micro services so that every outage could be more like a murder mystery. — https://twitter.com/honest_update/status/ 651897353889259520
Here's a diagram of two microservices and their shared database. — https://twitter.com/mathiasverraes/status/ 711168935798902785
OH: "replace your shared monolithic DB with a shared monolithic stream store" — https://twitter.com/ntcoding/status/928902644764200960
In every distributed system architecture diagram, change the box labeled “Kafka” to “ESB” and immediately “The hot new thing” becomes “The legacy we need to get rid of”. Think about that. #decentralize — https://twitter.com/olivergierke/status/1044592822500904960
...don’t even consider microservices unless you have a system that’s too complex to manage as a monolith. The majority of software systems should be built as a single monolithic application.
Do pay attention to good modularity within that monolith, but don’t try to separate it into separate services. — http://martinfowler.com/bliki/MicroservicePremium.html
https://twitter.com/simonbrown/status/847339104874381312
The #microservices bandwagon exists because the name is cool. Monoliths just need marketing help… #MegaPlatform #UberContainer #StereoLith — https://twitter.com/sjmaple/status/724541627407147008
#Serverfull
A word of the week: Microlith - a huge enterprise app ported to one, fat Docker container. #MicroserviceJokes — https://twitter.com/rmehmandarov/status/ 865542627004788737
If you want to implement microservices, the 1st thing you need to do is implement aggregated logging. The 2nd is implement correlation IDs — https://twitter.com/samnewman/status/ 862255875125366786
Microservices can help large number of people go faster by allowing more autonomy. I remain to be convinced it does the same for small teams — https://twitter.com/samnewman/status/ 778118760226062336
Repeat after me I'm not Facebook, Google, or Amazon
Greed is applied to a very excessive or rapacious desire and pursuit of material possessions.
Sloth is sometimes defined as physical laziness, but spiritual laziness is emphasized.
Continuous Integration CI Build and test every push
Continuous Delivery CD Manual production deployment
Continuous Deployment CD Automated production deployment
Facebook switched to Continuous Delivery / Deployment in 04/2017 https://code.facebook.com/posts/270314900139291/ rapid-release-at-massive-scale/
Deploy multiple times per day if it fits your business model. Don’t deploy for the sake of deploying.
https://twitter.com/allspaw/status/925490726468771840
DDD (Russian: Davai Davai Deploy) Just deploy this sh*t already. Come on! — https://twitter.com/Steve_Jules/status/ 862247438551265280
Also Deadline Driven Deployment
https://twitter.com/ericqweinstein/status/529319496029589504
Volkswagen detects when your tests are being run in a CI server, and makes them pass. https://github.com/auchenberg/volkswagen https://github.com/hmlb/phpunit-vw
Separate code and config
Do not commit secrets HashiCorp Vault Ansible Vault ...
Lust is an intense and uncontrolled desire.
Always use the hottest
High-latency low-throughput append-only database with very expensive transaction commit protocols just doesn’t have the same ring to it as “Blockchain” does it? — https://twitter.com/jstogdill/status/1004448569615626240
#Database: garbage-in garbage-out #Blockchain: garbage-in garbagecarved-in-stone — https://twitter.com/nivertech/status/1033037299553103872
Docker: each docker container should just run one process Me: but your containers are 700+MB each Docker: you see why our mascot is a whale — https://twitter.com/classam/status/743333692462895104
https://turnoff.us/geek/ before-devops-afterdevops/
"A container is just a process"
containers will not fix your broken architecture you are welcome — https://twitter.com/littleidea/status/659445920954642432
You gotta love the docker-compose command line: docker-compose down -v Removes all volumes docker-compose -v down Prints the version of docker-compose — https://twitter.com/fhopf/status/971910920522760192
New dependencies of your artifacts JVM and base image
so.. using GlibC? How’s re-imaging all of your @Docker images going? — https://twitter.com/starbuxman/status/ 700591322177019904
Containerizing legacy applications
Microservices + containers Cargo cult
cargo culting comes from received but not integrated knowledge. because one doesn't grasp how a thing works, one simply goes through the motion of how one was told to do it. — https://twitter.com/GeePawHill/status/ 931941663886454784
If you are only picking Kubernetes because that's the way Google does it, then you should also consider writing your own filesystems. — https://twitter.com/kelseyhightower/status/ 741310392756887552
At this point you're crazy to think you can manage k8s yourself. I'm sure you've got engineers who want to. It's shiny and fun now, but the novelty wears off quick. And then you are left with an old snowflake — https://twitter.com/ibuildthecloud/status/ 1020371700934881280
Kubris - the belief that Kubernetes can do everything by itself — https://twitter.com/monadic/status/1007293757501378560
OH: “their infra is 50 shades of broken and they’re now setting up their own frankenetes cluster hoping it’ll fix everything” — https://twitter.com/copyconstruct/status/ 935317466573504512
We've been so beaten into thinking we need to care about the speed-ofdelivery with containers, we lost focus somewhere on prod reliability — https://twitter.com/danveloper/status/858372256174669824
https:// www.monkeyuser.com/ 2018/tech-debt/
What's wrong here? For a stateful production service $ docker run -p 9200:9200 -p 9300:9300 -e "http.host=0.0.0.0" -e "transport.host=0.0.0.0" -e "discovery.zen.ping.unicast.hosts=..." docker.elastic.co/elasticsearch/elasticsearch
Zombies ideas that should have been killed by evidence, but keep shambling along
Run Elasticsearch as root
Cockroaches claims that disappear for a while when proved wrong, but just keep on coming back
Make JAR not WAR
YAML
https://twitter.com/Caged/status/1039937162769096704
One more thing Serverless
Serverless
Yesterday I have bird and bee discussion with junior devops for make realize cloud instance is born of real hardware. — https://twitter.com/DEVOPS_BORAT/status/ 289777231683788801
I felt a great disturbance in the cloud, as if millions of microservices suddenly cried out in terror, and were suddenly serverless. — https://twitter.com/kennybastani/status/ 858021145890762755
2016: Serverless Architecture 2017: Codeless Architecture 2018: Architectureless Architecture — https://twitter.com/benbjohnson/status/ 746049032699600897
by 2025, 30% of net new technical debt will be serverless — https://twitter.com/mstine/status/972207185005633536
PaaS reborn?
If your PaaS can efficiently start instances in 20ms that run for half a second, then call it serverless. — https://twitter.com/adrianco/status/736553530689998848
Every vendor that can't compete in Cloud chooses "Hybrid" as their strategy - Opinion's law of Cloud. — https://twitter.com/cloud_opinion/status/ 594215778947362816
Pride is identified as believing that one is essentially better than others.
"I know, we need DevDevOpsOps!" — https://twitter.com/ agile_memes/status/ 1019694518050754560
DevOps is not a tool | certificate | job title | team
To make error is human. To propagate error to all server in automatic way is #devops. — https://twitter.com/DEVOPS_BORAT/status/ 41587168870797312
DevOps is a software engineering culture and practice of putting horrors into containers and then talking about Kubernetes at conferences. — https://twitter.com/sadserver/status/1011652439303262208
Envy is the discontent towards someone's traits, status, abilities, or rewards.
Craft everything yourself!
! Infrastructure vs
All my servers are cattle ... except for the redis instance. That one gets health care and Christmas gifts. — https://twitter.com/ajordens/status/801847570259509248
"Every company has a test environment. Some are lucky enough to also have a production environment." — https://twitter.com/lowrykoz/status/1017850159198294022
Avoid Drift
I like the "ssh tags the instance for garbage collection" model as a step; it lets you migrate a team to new habits. — https://twitter.com/ferlatte/status/905984786082050048
Wrath also known as "rage", may be described as inordinate and uncontrolled feelings of hatred and anger.
How I Hacked My Morning Routine: I wiped a production database and now I am 100% definitely awake — https://twitter.com/iamdevloper/status/ 1034824761833136128
How do you monitor your system? End users.
UDP : User Distress Protocol. — https://twitter.com/thisisvibs/status/1022323915417210880
pretty awesome when monitoring tools say zero overhead. Might as well say negative overhead.. I mean if you are going to lie at least add value! — https://twitter.com/adrianfcole/status/ 1024140189331906560
What we really do when a server is down. #DevOps — https://twitter.com/ mattiasgeniar/status/ 1039892272643489792
Conclusion
What did we learn today? It depends...
A good developer is like a werewolf: Afraid of silver bullets. — https://twitter.com/codepitbull/status/ 784691906005635072
Think back five years ago. How many technical opinions did you deeply hold which you now repudiate? Now think about the present. How many opinions do you deeply hold today?
We are always in a state of progressive wrongness. Don't cling too tightly to what you believe today. — https://twitter.com/djspiewak/status/ 1040247203648819200
Questions? Confessions? @xeraa
Do you have something to confess? Or are you still in denial — knowing that you’re doing something wrong, but you cannot say for sure what it is? In this talk, we’ll go through our deployment sins and how to avoid them.
Here’s what was said about this presentation on social media.
#DevConfPL SOAP=CRAP pic.twitter.com/C5RjhXN2RJ
— Przemysław Kormański (@pkormanski) September 27, 2018
#devconfpl pic.twitter.com/yssVaAVgI5
— Iwona (@programistka) September 27, 2018
właśnie poznalem ddd #DevConfPL pic.twitter.com/z2HoJ9PHPJ
— Jaroslaw Stadnicki (@j_stadnicki) September 27, 2018
Tech debt #devconfpl pic.twitter.com/QIlPfdT3gC
— Łukasz Kurzyniec (@lkurzyniec) September 27, 2018
True! Correlation IDs are important in microservices world #devconfpl pic.twitter.com/M7VEwuqYJx
— Łukasz Kurzyniec (@lkurzyniec) September 27, 2018