JAX 2018 The Bumpy road towards containerized Microservices

Nicky Wrightson, FinancialTimes

JAX direct link

200 containerized services + kubernetes orchestration across two regions.

Why containers

Monoliths didn’t cut it if they were to keep relieince while developing new features

80% cost reduction using containers.

Increased testability using containers (everything is guaranteed to be in place).


Too much change too soon!

Some serverless components today.

PoC early 2015

Kubernetes not around, so built their own.

Java not extremely resource conservative compared to e.g. Go. ==> High Container footprint

Use only where needed, consider lighter alternatives elsewhere.

Containerise all the things == a lot of hard work

Of course, changed DB to Neo4J at the same time as they did everything else…

Control issues (mapp service hw req vs hosted VM)

Stateful services make containers sad

Limit container growth.

Monitor at the right level to get the high level view. <== put effort in Core Business Value critical services.

SIMPLE deployment pipeline.

Operational Testing awareness.

Automate the complex things, even if they are rarely done

AWS dropped Fleet support ==> forced migration to Kubernetes and Helm – yay!

Tweak deployment details during active development during migration.




Operationally supportable

Deployments are more graceful

More self-healing


Rewrite parts of the architecture to fit into all of the nice new features.

Monolithic cluster via namespaces?

Continuous migration?

3 innovation tokens” <== gör vad du är bra på

  • Köp resten

JAX 2018 An Architect’s Guide to Site Reliability Engineering

By Nathaniel Schutta, Pivotal

Bok: Thinking Architecturally

JAX direct link

Monolithics principles don’t necessarily apply to microservices.

How we work together matters.

Communication is even more important in a complec world.

So what is the history of IT?

Apollo program Margaret Hamilton first SRE.

Wanted to implement error checking to avoid data erasure during takeoff. Management denied this, shit followed 1968.

Hope Is Not A Strategy!

Monolith + sysop ==> microservices + devops

CORBA ==> EJB ==> SOA ==> API first

:. Cambrian explosion of API:s

E.g. Dark Sky API <== väderapp

Amazon: Steve Yegge the Bezos mandate: all data available between public service API:s.

Present day

Troubleshooting multilevel microservice arhitecture difficult. Who is responsible?

Domain-Driven Design

Microservice definition: rewriteable in under 2 weeks.

Call graph limes death star

Everything changing makes sysop sad – how to make them happier?

  • Replace maual tasks with automation!
  • Focus on engineering
  • Helpful to know Unix and network stack
  • CAB won’t cut it

How to move fast safely?

Ops must be able to support a dynamic environment

Important to prioritize, setting aside time for this – else no automation will get done.

Establish sane SLO:s

Manage risk, shit will break.

Risk is a continuum!

How much does catastrophic failure cost? ==> Lost revenue vs cost of redundancy.

Firefightning isn’t a long term solution. It may be better to accept short term lowered SLO:s to engineer a better long term solution.

Archilochus: ”We don’t rise to the level of our expectations, we fall to the level of our training” [1]

MEANINGFUL moitoring

Alerts should require a human. The rest should self-heal.

Less grunt!

Vital to learn from outages ==> Post Mortem without blame. Consider making a PM template.


  • Action items
  • Timeline
  • Root causes [1] [2]
  • *

Online examples available.

Wheel of Misfortune <== failure role playing

Some services are more equal than others.

If uptime goal of 99%, error budget is 1% ==> use it to experiment

Draw up the architecure! Make sure everyone understands/shares a common model of the architecture.

Boktips: The Checklist Manifesto

Quantifiable and Measurable

Go through your checklists, does every service fulfill the demands?

Boktips: Building evolutionary architectures

Architectural reviews ==>

  • identify failure points.
  • Failure scenarios
  • Chaos engineering

We all need to evolve to succeed!

Boktips: Site Reliability Engineering.


JAX 2018 Testing microservices, from development to production

By: Daniel Bryant

JAX direct link

Pre-prod vs post-prod tests

  • Contract testing
  • Api simulation

Test-pyramiden, agile testing quadrant

Test pyramid created before micro services, but after David Patna’s modularity ==> skilja mellan test av systemtest och mer behovsbaserad testplan för de enskilda mikrotjänsterna

Boktips: Distributed Systems Observability

Microservice test funnel – Cindy Sridharan ”testing microservices the sane way

Some tests should be done in production

Lessons learned

Unit testing

  • Don’t avoid unit test <== 77% production failues can be reproduced by a unit test
  • Testing error handling could have prevented 58% of catastrophic failures.
  • 35% of catastrpåhic failures bacause of empty error handler.

Integration/component tests

  • If it looks to comlicated, it probably is
  • Coupling and cohesion apply to everything!

End to end tests

  • Representational data is often the weakest link
  • Understand your data ”shape” and volume
  • Synthetic datastores
    • Hsqldb
    • Qpid
    • Testcontainers (ramverk)

General strategies

  • Test outisde-in
  • Acceptance tests for systems and services
  • ”LUFD” the context and TDD the API
  • Virtualise dependencies

Makes regressions testing easier.

JMeter vs Gatling (scala), hur påverkar det lättheten att skriva lasttester?

Synthetic transactions in production <== CAREFUL!!

Test contracts of unstable API:s. Choose your battles.

Invest in monitoring, synthetic transactions and chaos engineering (in this order).

Contract (Testing Syntax)

If you breake a contract, don’t blame, go communicate.

Usually fits between component test and end-to-end-tests.

API Contracts are service contracts

  • Many are producer driven
  • It’s possible to design outside-in
    • Consumer-driven contracts (CDC)
    • Pact (ramverk) on the Consumer side
    • Verify expectations on Provider.
  • CDC frameworks
    • Pact
    • Spring cloud contract
    • Pact supports AMQP contracts
  • Hur hantera kontrakt i t.ex. Kafka?

Contract testing Musings

  • Great in low trust low communication
    • Act as a cue for communication
  • Lesser value during incubation/startups
  • Can be used to implement TDD for the API
  • Resource intensive to create and maintain

API simulation (testing semantics)

  • How to keep track of internal services/dependencies?
  • Not always easy to mock away.
  • Virtual services?
  • LocalStack (AWS)


  • Great when service expencive to access or tricky to mock
  • Userful to test failure modes, when hard to recreate
  • Can be fragile and complicated

Fault injection (testing resilience)


  • Assert system quality attributes
  • Can prompt team tp think about monitoring and resilience
  • Can cause a lot of damage if used wrong


Balance pre-production testing and production testing.

Don’t try to be absolutely correct.

Book tip: Continuous Delivery in Java



JAX 2018 CD is better for your brain

By Daniel Jones

JAX direct link

Post-industrial era really easy to get to the market, or to make a competitive product, so how should we tackle this?

Customer relations, and the ability to ccontinuous change is getting mote and mote important – change and reimplementation is much cheaper than losing all of your customers to the competition.

How to get input quickly – enabling change

Group identity co-relates to empathic response triggers => silos increase this problem. Create a larger tribe to increase investment from all parties.

By increasing automation, specialist competence in many areas less important, easier to devops.

From waterfall to handle complex coordination ==> one tribe cross communication while doing fewer things well during a time period

Hardwired to care more about near-time spatially near important tasks

Serialize tasks rather than multitasking, one tribe at a time.

Book tip ”Scarcity” . Being in situational scarcity reduces effective IQ.

Can be triggered by TIME as well, one of our key scarcity elements.

This is the effect of taking on more work than we can solve.

CD makes deadlines meaningless, given that we deliver the most important thing.

How do this in a fractured customer space??? ==> Hopefully not SAFe!

Rewards replenishes willpower

How implement locally? ==> CD (incremental imrpovement) trigge

JAX 2018 What Does Cloud Natice Java really mean to developers?

Paneldiskussion: Daniel Bryant, Jessica Deen, Sebastian Meyen, Steve Poole, Martjn Verburg

Äntligen tillbaka till kommandoraden!

Öppet sinne och erkänna att det finns saker du inte kan – ut på korståg!

Javautvecklare måste intressera sig för ops och arkitekturen.

Molnet sipprar in i det egna datacentret vare sig vi vill eller inte.

Hosting i öppna molnet kräver ett större intresse i arkitekturella frågor, latens och andra faktorer., är mycket mindre förutsägbara.

Andra attackytor – större krav på säkerhet hela vägen, zero trust network.

Hur undvika vendor lock-in i molnet? It works on my machine är inte tillräckligt. Men en flytt till molnet kommer att underlätta att flytta mellan molnleverantörer (hög standardisering med bl.a. envoy och kubenretes API:er).

Svårt att flytta DATA mellan olika leverantörer om du har mycket data.


Om certifiering på specifik plattform – försök fånga alla nivåer så att du kan kommunicera på rätt abstraktionsnivå.

Löpande kostnade/debiteringsmodellenn för molnet påverkar arkitekturen hos din applikation på sikt.

Deployment av Java i molnet är något av en utmaning, med minnesavtryck, uppstartstider, etc. Inga tydliga svar i dagsläget. JVM optimerad för traditionella miljöer, spännande framtid hur JVM:en optimerar imorgon. Alpine + Jlinker + Java-app := riktigt tunn container för java.

Utveckla din applikation för deployment på flera moln samtidigt för ökad stabilitet och fortsatt valfrihet. Designing for replacability.

Moln + mikrotjänster går hand i hand (Paper: Decomposing systems), får se vilken grad av modularisering det landar i på sikt. Skalbarhet.


JAX 2018 Architecting an enterprise blockchain solution: Key considerations

By Vinita Rathi, Systango

JAX London 2018

Började leka med blockchains på allvar 2016. Forkar av Bitcoin, t ex Ethereum.

När behövs en blockkedja, egentligen?

  • Journalsystem
  • Data integrity management
  • Finansapplikationer

Varför använda blockkedja?

  • Data-integritet?
  • Transaktions-integritet?
  • För att det är hippt?

Blockkedjeteknik finns i flera smaker, så vilken passar just ditt scenario?

  • Konfidentialitet?
  • Decentralisering?
  • Dataintegritet?
  • Skalbarhet?
  • Säkerhet?

Diverse översiktliga anropsdiagram för att demonstrera tidigare projekt hos bolaget.

Ofta måste man välja implementation efter vilka krav ovan som är viktiga. Ingen lösning erbjuder alla 5.

Det går inte att uppdatera enskilda poster, utan enda sättet är att deploya en ny version av posten.

Ofta bäst att använda en hybridlösning av blockkedjor och traditionella databaser.


GT Jer 38:7-13

Nubiern Eved-Melek, en hovman som befann sig i kungapalatset, fick höra att de hade kastat Jeremia i brunnen. Kungen satt då i Benjaminporten, 8och Eved-Melek lämnade kungapalatset för att gå och tala med kungen: 9”Min herre och konung, det som dessa män har gjort mot profeten Jeremia är ett svårt brott. De har kastat honom i brunnen, och där kommer han att svälta ihjäl. Det finns ju inte längre något bröd i staden.”

10Kungen gav då nubiern Eved-Melek denna befallning: ”Ta med dig tre män härifrån och dra upp profeten Jeremia ur brunnen innan han dör.” 11Eved-Melek tog med sig männen till klädkammaren i kungapalatsets förråd. Där hämtade de trasor av gamla utslitna kläder och firade ner dem till Jeremia i brunnen med rep. 12Nubiern Eved-Melek ropade till Jeremia: ”Lägg klädtrasorna i armhålorna, under repen!” Jeremia gjorde så, 13och de drog upp honom med repen ur brunnen. Men Jeremia måste stanna på vaktgården.

Epistel Rom 12:16-21

Bemöt alla lika och håll er inte för goda att umgås med dem som är ringa. Var inte självkloka. 17Löna inte ont med ont. Tänk på vad som är riktigt för alla människor. 18Håll fred med alla människor så långt det är möjligt och kommer an på er. 19Ta inte rätten i egna händer, mina kära, utan låt Guds vrede ha sin gång, ty det står skrivet: Min är hämnden, jag skall utkräva den, säger Herren. 20Men är din fiende hungrig, ge honom att äta; är han törstig, ge honom att dricka. Då samlar du glödande kol på hans huvud. 21Låt dig inte besegras av det onda, utan besegra det onda med det goda.

Evangelium Matt 7:12

Allt vad ni vill att människorna skall göra för er, det skall ni också göra för dem. Det är vad lagen och profeterna säger.

Psaltarpsalm Ps 103:1-6

Av David. Lova Herren, min själ, hela mitt jag vill prisa hans heliga namn! 2Lova Herren, min själ, minns allt det goda han gör: 3han förlåter alla mina synder och botar alla mina sjukdomar, 4han räddar mig från graven och kröner mig med nåd och barmhärtighet, 5han fyller mitt liv med allt gott, och jag blir ung på nytt som en örn. 6Herren handlar rättfärdigt och ger de förtryckta deras rätt.

Migrerat från Hägglund.com med tillstånd.


GT 2 Mos 23:10-12

Sex år skall du beså din jord och bärga dess gröda, 11men det sjunde året skall du låta marken vila och ligga i träda. Då kan de fattiga i ditt folk få sin föda från den. Det som blir över kan de vilda djuren äta. Så skall du också göra med din vingård och dina olivträd.

12Sex dagar skall du arbeta, men den sjunde dagen skall du upphöra med arbetet, så att din oxe och åsna får vila och slavkvinnans son och invandraren får hämta krafter.

Epistel Gal 4:31-5:6

Alltså, bröder, är vi inte barn till en slavinna utan till den fria kvinnan. 5 1Till den friheten har Kristus befriat oss. Stå därför fasta, och låt ingen lägga på er slavoket igen. Rättfärdighet utan omskärelse

2Hör på vad jag säger er, jag Paulus: om ni låter omskära er har ni ingen nytta alls av Kristus. 3Jag försäkrar er igen: var och en som låter omskära sig är skyldig att hålla hela lagen. 4Ni är utestängda från Kristus, ni som söker er rättfärdighet i lagen; ni har hamnat utanför nåden. 5Ty vi väntar oss i vår ande att genom tron vinna den rättfärdighet som är vårt hopp. 6I ett liv med Kristus Jesus kommer det inte an på omskärelse eller förhud, utan på tron, som får sitt uttryck i kärlek.

Evangelium Mark 2:23-28

En sabbat tog han vägen genom sädesfälten, och lärjungarna började rycka av ax medan de gick. 24Då sade fariseerna till honom: ”Varför gör de sådant på sabbaten som inte är tillåtet?” 25Han svarade: ”Har ni aldrig läst vad David gjorde när han och hans män blev hungriga och inte hade något att äta? 26Han gick in i Guds hus – det var när Evjatar var överstepräst – och åt upp skådebröden, som inga andra än prästerna får äta, och gav också dem som var med honom.” 27Och Jesus sade till dem: ”Sabbaten blev till för människan och inte människan för sabbaten. 28Alltså är Människosonen herre också över sabbaten.”

Psaltarpsalm Ps 145:13b-18

Gud håller sina löften, kärleksfull i allt han gör. 14Herren stöder dem som vacklar, han rätar krökta ryggar. 15Allas ögon är vända mot dig, och du ger dem föda i rätt tid. 16Du öppnar din hand och stillar allt levandes hunger. 17Rättfärdig är Herren i alla sina gärningar, kärleksfull i allt han gör. 18Herren är nära alla som ropar, alla som av hjärtat ropar till honom.

Migrerat från Hägglund.com med tillstånd.


GT Jes 1:10-17

Lyssna till Herrens ord, sodomfurstar! Hör vad vår Gud har att säga, gomorrafolk! 11Vad skall jag med alla era slaktoffer? säger Herren. Jag är mätt på brännofferbaggar och gödkalvars fett, jag vill inte ha blodet från tjurar och lamm och bockar. 12Vem har begärt detta av er när ni träder fram inför mig, ni som trängs på mina förgårdar? 13Kom inte med era meningslösa gåvor, jag avskyr offerröken. Nymånad, sabbat, högtidssamling – jag tål inte falskhet och fest. 14Jag hatar era högtider och nymånadsfester, de har blivit en börda för mig, som jag inte orkar bära.

15När ni lyfter era händer i bön vänder jag bort blicken. Hur mycket ni än ber lyssnar jag inte. Ni har blod på händerna. 16Tvätta er, rena er! Låt mig slippa se era illdåd. Sluta göra det onda 17och lär er göra det goda. Sträva efter rättvisa, stöd den förtryckte. För den faderlöses talan, skaffa änkan rätt.

Epistel Jak 1:22-25

Bli ordets görare, inte bara dess hörare, annars tar ni miste. 23Den som hör ordet men inte gör vad det säger, han liknar en man som i en spegel betraktar sitt eget ansikte: 24han ser sig själv men går därifrån och har strax glömt hur han såg ut. 25Men den som har blickat in i den fullkomliga lagen, frihetens lag, och håller sig till den och inte glömmer vad han hört utan verkligen gör något, han blir salig genom det han gör.

Evangelium Matt 23:1-12

Sedan talade Jesus till folket och sina lärjungar 2och sade: ”De skriftlärda och fariseerna har satt sig på Moses stol. 3Gör därför allt vad de lär er och håll fast vid det, men handla inte som de gör, för de säger ett och gör ett annat. 4De binder ihop tunga bördor och lägger dem på människornas axlar, men själva rör de inte ett finger för att rätta till dem. 5Allt vad de företar sig gör de för att människorna skall lägga märke till dem. De skaffar sig breda böneremsor och stora manteltofsar. 6De tycker om att ha hedersplatsen på gästabuden och sitta främst i synagogan, 7och de vill bli hälsade på torgen och kallas rabbi av alla människor. 8Men ni skall inte låta er kallas rabbi, ty en är er läromästare och ni är alla bröder. 9Ni skall inte kalla någon här på jorden för er fader, ty en är er fader, han som är i himlen. 10Inte heller skall ni låta er kallas lärare, ty en är er lärare, Kristus. 11Den som är störst bland er skall vara de andras tjänare. 12Den som upphöjer sig skall bli förödmjukad, och den som ödmjukar sig skall bli upphöjd.

Psaltarpsalm Ps 143:6-10

Jag sträcker mina händer mot dig, öppnar mig som törstig jord. 7Herre, skynda att svara mig, jag orkar inte mer. Dölj inte ditt ansikte för mig, då blir jag lik dem som lagts i graven. 8Låt mig var morgon möta din trofasthet, ty jag förtröstar på dig. Visa mig den väg jag skall gå, jag sätter mitt hopp till dig. 9Herre, rädda mig från mina fiender, jag flyr till dig. 10Lär mig att göra din vilja, ty du är min Gud. Må din goda ande leda mig på jämn mark.

Migrerat från Hägglund.com med tillstånd.


GT Jos 24:16-18

Folket svarade: ”Aldrig någonsin skall vi överge Herren och tjäna andra gudar. 17Herren är vår Gud. Det var han som förde oss och våra fäder ut ur Egypten, ut ur slavlägret, han som inför våra ögon gjorde dessa stora tecken. Han skyddade oss under hela vår vandring och bland alla de folk genom vilkas land vi drog fram. 18Herren jagade undan alla folken för oss, även amoreerna som bodde i landet. Också vi vill tjäna Herren. Han är vår Gud.”

Epistel 1 Kor 12:4-11

Nådegåvorna är olika, men Anden densamma. 5Tjänsterna är olika, men Herren densamme. 6Verksamheterna är olika, men Gud är densamme, han som verkar i allt och överallt. 7Hos var och en framträder Anden så att den blir till nytta. 8Den ene får genom Anden gåvan att meddela vishet, den andre kan med samma Andes hjälp meddela kunskap. 9En får tron genom Anden, en annan genom samma Ande gåvan att bota, 10en annan får kraft att göra under. En får förmågan att tala profetiskt, en annan att skilja mellan olika andar. En kan tala olika slags tungotal, en annan kan tolka tungotal. 11Allt detta åstadkommer en och samma Ande genom att fördela sina gåvor på var och en så som den själv vill.

Evangelium Luk 9:46-48

De började undra vem som var den störste av dem. 47Jesus, som visste vad de tänkte i sina hjärtan, tog ett barn och ställde det bredvid sig 48och sade till dem: ”Den som tar emot detta barn i mitt namn, han tar emot mig, och den som tar emot mig, han tar emot honom som har sänt mig. Ty den som är minst av er alla, han är stor.”

Psaltarpsalm Ps 28:6-9

Lovad vare Herren, ty han har hört min bön. 7Herren är min styrka, min sköld, på honom förtröstar jag. Jag fick hjälp och mitt hjärta jublar, hela min varelse tackar honom. 8Herren är sitt folks styrka, sin smordes tillflykt och räddning. 9Rädda ditt folk och välsigna din egendom. Var deras herde, bär dem för evigt.

Migrerat från Hägglund.com med tillstånd.