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

Why You Can't Buy Cloud Native

Why You Can't Buy Cloud Native

The virtual shelves are filled to bursting with cloud native technologies; containers, runtimes, CI pipelines, observability tools. The more an organisation buys, the more cloud native it is, right? And the more network communication an app involves, the more cloud native it is, right? Well, not so much. It turns out cloud native is about how you deliver software, not the tools you use. This talk explains these often-overlooked elements for cloud native success:

- Figuring out what problem we’re trying to solve
- Releasing
- Testing, but not the way you’re used to

Holly Cummins

July 19, 2022
Tweet

More Decks by Holly Cummins

Other Decks in Technology

Transcript





  1. Holly Cummins


    Red Hat


    @holly_cummins
    #JBCNConf
    why you can’t buy


    cloud native

    View Slide

  2. @holly_cummins
    #JBCNConf

    View Slide

  3. @holly_cummins
    #JBCNConf

    View Slide

  4. @holly_cummins
    #JBCNConf
    let’s install it!

    View Slide

  5. @holly_cummins
    #JBCNConf
    let’s install it!
    where do I download it?

    View Slide

  6. @holly_cummins
    #JBCNConf

    View Slide

  7. @holly_cummins
    #JBCNConf
    yes, there is
    some irony
    Buy Quarkus!
    Quarkus helps you be
    cloud native!

    View Slide

  8. @holly_cummins
    #JBCNConf
    quarkus makes your cloud cloudier

    View Slide

  9. @holly_cummins
    #JBCNConf
    quarkus makes your cloud cloudier

    View Slide

  10. @holly_cummins
    #JBCNConf
    did I mention quarkus
    saves cloud costs?

    View Slide

  11. @holly_cummins
    #JBCNConf
    did I mention quarkus also
    makes developers happier?

    View Slide

  12. what are we
    even trying to
    buy?

    View Slide

  13. what are we
    even trying to
    buy?

    View Slide

  14. Kubernetes


    what are we
    even trying to
    buy?

    View Slide

  15. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services

    View Slide

  16. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud

    View Slide

  17. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    DevOps


    but make it 2021


    View Slide

  18. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    12-factor


    DevOps


    but make it 2021


    View Slide

  19. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    12-factor


    Just


    Cloud


    DevOps


    but make it 2021


    View Slide

  20. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    12-factor


    Just


    Cloud


    DevOps


    but make it 2021


    Modern


    and Nice


    View Slide

  21. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    12-factor


    Just


    Cloud


    idempotent


    DevOps


    but make it 2021


    Modern


    and Nice


    View Slide

  22. Kubernetes


    what are we
    even trying to
    buy?
    Micro


    services
    Born


    on the Cloud
    12-factor


    Just


    Cloud


    idempotent


    DevOps


    but make it 2021


    legacy app
    but on the
    cloud
    Modern


    and Nice


    View Slide

  23. View Slide

  24. @holly_cummins
    #RedHat
    microservices will
    make me look so
    good
    software is fashions

    View Slide

  25. @holly_cummins
    #RedHat
    surely no one would …

    View Slide

  26. @holly_cummins
    #RedHat
    surely no one would …

    View Slide

  27. @holly_cummins
    #RedHat
    surely no one would … oh.

    View Slide

  28. @holly_cummins
    #RedHat
    cv-driven
    development

    View Slide

  29. @holly_cummins #RedHat
    there’s a whole
    landscape to explore

    View Slide

  30. @holly_cummins #RedHat
    it’s not just a landscape


    it’s a catalog

    View Slide

  31. @holly_cummins #RedHat
    it’s not just a landscape


    it’s a catalog
    ooh, which ones
    shall I have?

    View Slide

  32. @holly_cummins #RedHat
    it’s not just a landscape


    it’s a catalog
    ooh, which ones
    shall I have?
    they’re all so
    shiny

    View Slide

  33. @holly_cummins
    #RedHat
    what problem are we
    trying to solve?

    View Slide

  34. @holly_cummins
    #RedHat
    “the problem I am solving is there
    are no microservices on my CV”

    View Slide

  35. @holly_cummins #RedHat
    my problem is
    there aren’t
    enough containers
    yet?

    View Slide

  36. @holly_cummins #RedHat
    my problem is
    there aren’t
    enough containers
    yet?

    View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. Warning


    May contain


    Coupling


    Cloud native spaghetti


    Distributed monolith
    !

    View Slide

  41. @holly_cummins
    #RedHat

    View Slide

  42. @holly_cummins
    #RedHat
    distributed monolith

    View Slide

  43. @holly_cummins
    #RedHat
    distributed monolith
    worst of both worlds:


    no compile-time checking


    … or guaranteed function execution

    View Slide

  44. @holly_cummins
    #RedHat
    microservices are
    not the goal

    View Slide

  45. @holly_cummins
    #RedHat
    microservices are
    not the goal
    they are the means

    View Slide

  46. @holly_cummins
    #RedHat
    microservices are
    not the goal
    they are the means
    they are a means

    View Slide

  47. View Slide

  48. “the cloud native-ness comes from these network connections”

    View Slide

  49. “the cloud native-ness comes from these network connections”
    (no, it doesn’t!)

    View Slide

  50. the pain comes from these network connections

    View Slide

  51. remember the distributed computing fallacies?
    the pain comes from these network connections

    View Slide

  52. remember the distributed computing fallacies?
    1. The network is reliable;
    2. Latency is zero;
    3. Bandwidth is infinite;
    4. The network is secure;
    5. Topology doesn't change;
    6. There is one administrator;
    7. Transport cost is zero;
    8. The network is homogeneous.
    the pain comes from these network connections

    View Slide

  53. remember the distributed computing fallacies?
    1. The network is reliable;
    2. Latency is zero;
    3. Bandwidth is infinite;
    4. The network is secure;
    5. Topology doesn't change;
    6. There is one administrator;
    7. Transport cost is zero;
    8. The network is homogeneous.
    9. Distributed means decoupled!
    the pain comes from these network connections

    View Slide

  54. @holly_cummins
    #JBCNConf
    reasons not to do microservices


    • small team


    • not planning to release independently


    • don’t want complexity of a service mesh
    - or worse yet, rolling your own


    • domain model doesn’t split nicely

    View Slide

  55. @holly_cummins
    #JBCNConf
    “every time we change one
    microservice, another breaks”
    true story

    View Slide

  56. @holly_cummins
    #JBCNConf
    distributed != decoupled

    View Slide

  57. @holly_cummins #RedHat
    how do you know if
    you’re decoupled?

    View Slide

  58. can you deploy
    independently? v5.1.4
    v5.1.4
    v5.1.4
    v5.1.4

    View Slide

  59. can you deploy
    independently? v6.2.8
    v65.7
    v5.1.4
    v1.0.5

    View Slide

  60. @holly_cummins
    #RedHat
    “we made our pipeline enforce releasing
    all our microservices at the same time.”
    true story

    View Slide

  61. @holly_cummins
    #RedHat
    can you even
    deploy at all?

    View Slide

  62. @holly_cummins
    #RedHat
    can you even
    release at all?

    View Slide

  63. can you
    release often? v1.0
    v1.0
    v1.0
    v1.0

    View Slide

  64. @holly_cummins
    #JBCNConf
    deferred wiring
    a deploy is not a release

    View Slide

  65. can you
    release often? v1.0
    v2.0
    v1.0
    v1.0

    View Slide

  66. @holly_cummins
    #JBCNConf
    feature flags
    a deploy is not a release

    View Slide

  67. @holly_cummins
    #JBCNConf
    A/B testing


    canary deploys
    a deploy is not a release

    View Slide

  68. @holly_cummins
    #JBCNConf
    “we have a CI/CD”

    View Slide

  69. @holly_cummins
    #JBCNConf
    by the way, you also
    can’t buy devops

    View Slide

  70. @holly_cummins
    #JBCNConf
    (Matt was not serious, before anyone takes this out of context and decides he’s an awful person and they should hate him.)

    View Slide

  71. @holly_cummins
    #JBCNConf
    if you only want a small amount of devops …

    you can’t buy a devop

    View Slide

  72. @holly_cummins
    #JBCNConf
    CI/CD is something you do


    not a tool you buy

    View Slide

  73. @holly_cummins
    #JBCNConf
    “i’ll merge my branch
    into our CI next week”

    View Slide

  74. @holly_cummins
    #JBCNConf
    “CI/CD … CI/CD … CI/CD …


    we release every six months …


    CI/CD …. ”

    View Slide

  75. @holly_cummins
    #JBCNConf
    continuous.


    I do not think that word means
    what you think it means.

    View Slide

  76. @holly_cummins
    #RedHat
    “we’re going too slowly.


    we need to get rid of COBOL
    and make microservices!”
    true story

    View Slide

  77. @holly_cummins
    #RedHat
    “we’re going too slowly.


    we need to get rid of COBOL
    and make microservices!”
    “… but our release board
    only meets twice a year.”
    true story

    View Slide

  78. @holly_cummins
    #RedHat
    “we can’t actually release a
    microservice without the
    release board and all the other
    microservices need to be
    released at the same time and the
    manual QA cycle and the release
    checklist and the incantations and the
    death march and the sacrificing a goat and
    the spreadsheet and the moon being in the right
    phase and…”

    View Slide

  79. @holly_cummins
    #RedHat
    releases are like brushing your teeth:


    if it hurts do it more often

    View Slide

  80. @holly_cummins #RedHat
    “we can’t ship until we
    have more confidence
    in the quality”

    View Slide

  81. @holly_cummins #RedHat
    “our tests aren’t automated”

    View Slide

  82. @holly_cummins #RedHat
    “we don’t know if
    our system works”

    View Slide

  83. @holly_cummins #RedHat
    if you’re going to be spaghetti, at
    least be tested spaghetti


    View Slide

  84. @holly_cummins #RedHat

    View Slide

  85. @holly_cummins #RedHat
    … and use contract tests

    View Slide

  86. @holly_cummins #RedHat
    … and use contract tests
    seriously, use contract tests

    View Slide

  87. @holly_cummins
    #RedHat
    “we can’t release because
    we don’t seem to be able to
    actually change things”

    View Slide

  88. @holly_cummins #RedHat
    the enterprise hairball
    why change is hard:

    View Slide

  89. @holly_cummins #RedHat
    our layer


    (“business logic”)

    View Slide

  90. @holly_cummins #RedHat
    our layer


    (“business logic”)

    View Slide

  91. @holly_cummins #RedHat
    database layer


    our layer


    (“business logic”)

    View Slide

  92. @holly_cummins #RedHat
    database layer


    front-end layer


    our layer


    (“business logic”)

    View Slide

  93. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)

    View Slide

  94. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    we
    can’t make progress
    because we need a
    change to the
    database

    View Slide

  95. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    we
    can’t make progress
    because we need a
    change to the
    database

    View Slide

  96. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    oh wait …


    every change needs a
    front-end change too
    we
    can’t make progress
    because we need a
    change to the
    database

    View Slide

  97. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    oh wait …


    every change needs a
    front-end change too
    we
    can’t make progress
    because we need a
    change to the
    database

    View Slide

  98. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    oh wait …


    every change needs a
    front-end change too
    uh…
    we can’t release our
    cool new stuff because we’re
    dependent on a change in
    the integration layer
    we
    can’t make progress
    because we need a
    change to the
    database

    View Slide

  99. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    oh wait …


    every change needs a
    front-end change too
    uh…
    we can’t release our
    cool new stuff because we’re
    dependent on a change in
    the integration layer
    we
    can’t make progress
    because we need a
    change to the
    database
    what are that ^&!
    *(&!! integration team even
    doing with their time?

    View Slide

  100. @holly_cummins #RedHat
    integration layer


    (“panicked sandwich”)
    database layer


    front-end layer


    our layer


    (“business logic”)
    oh wait …


    every change needs a
    front-end change too
    uh…
    we can’t release our
    cool new stuff because we’re
    dependent on a change in
    the integration layer
    we
    can’t make progress
    because we need a
    change to the
    database
    what are that ^&!
    *(&!! integration team even
    doing with their time?

    View Slide

  101. @holly_cummins
    #JBCNConf
    a new approach to ops

    View Slide

  102. @holly_cummins
    #JBCNConf
    SRE

    View Slide

  103. @holly_cummins
    #JBCNConf
    a new approach to risk

    View Slide

  104. @holly_cummins
    #JBCNConf
    de-risk through
    automation, not paperwork

    View Slide

  105. @holly_cummins
    #JBCNConf

    View Slide

  106. @holly_cummins
    #JBCNConf
    old-style governance
    isn’t going to work

    View Slide

  107. @holly_cummins
    #JBCNConf
    “this provisioning
    software is broken”

    View Slide

  108. @holly_cummins
    #JBCNConf
    what we sold
    “this provisioning
    software is broken”
    10 minute
    provision-time

    View Slide

  109. @holly_cummins
    #JBCNConf
    what we sold
    “this provisioning
    software is broken”
    10 minute
    provision-time
    3 month
    provision-
    time
    what the
    client
    thought
    they’d got

    View Slide

  110. @holly_cummins
    #JBCNConf
    what we sold
    “this provisioning
    software is broken”
    10 minute
    provision-time
    3 month
    provision-
    time
    what the
    client
    thought
    they’d got
    the reason
    84-step


    pre-approval process

    View Slide

  111. @holly_cummins #RedHat
    one thing you can buy

    View Slide

  112. @holly_cummins #RedHat
    one thing you can buy

    View Slide

  113. @holly_cummins #RedHat
    one thing you can buy

    View Slide

  114. @holly_cummins
    #JBCNConf
    you may not want all
    the cloud you bought

    View Slide

  115. @holly_cummins
    #JBCNConf
    you may not want all
    the cloud you bought

    View Slide

  116. @holly_cummins #RedHat
    Hey boss, I created a
    Kubernetes cluster.
    true story, unfortunately
    me

    View Slide

  117. @holly_cummins #RedHat
    Hey boss, I created a
    Kubernetes cluster.
    I forgot it for 2
    months.
    true story, unfortunately
    me

    View Slide

  118. @holly_cummins #RedHat
    Hey boss, I created a
    Kubernetes cluster.
    I forgot it for 2
    months.
    … and it’s £1000 a
    month.
    true story, unfortunately
    me

    View Slide

  119. @holly_cummins #RedHat

    View Slide

  120. @holly_cummins #RedHat

    View Slide

  121. @holly_cummins #RedHat
    $11,448.30

    View Slide

  122. @holly_cummins #RedHat
    uh…
    why are our cloud
    bills so large? what is all
    this stuff?
    mystery money pit

    View Slide

  123. @holly_cummins #RedHat

    View Slide

  124. @holly_cummins #RedHat

    View Slide

  125. @holly_cummins #RedHat
    cost is now an
    engineering concern

    View Slide

  126. @holly_cummins
    #JBCNConf
    FinOps

    View Slide

  127. @holly_cummins #RedHat
    getting it
    right

    View Slide

  128. @holly_cummins #RedHat
    tangibile-ness

    View Slide

  129. @holly_cummins #RedHat
    cncf-listed products
    tangibile-ness

    View Slide

  130. @holly_cummins #RedHat
    cncf-listed products
    cloud native architecture
    tangibile-ness

    View Slide

  131. @holly_cummins #RedHat
    cncf-listed products
    cloud native architecture
    cloud native operations
    tangibile-ness

    View Slide

  132. @holly_cummins #RedHat
    cncf-listed products
    cloud native architecture
    cloud native operations
    cloud native business drivers
    tangibile-ness

    View Slide

  133. @holly_cummins #RedHat
    cncf-listed products
    cloud native architecture
    cloud native operations
    cloud native business drivers
    tangibile-ness

    View Slide

  134. @holly_cummins #RedHat
    cncf-listed products
    cloud native architecture
    cloud native operations
    cloud native business drivers
    culture
    tangibile-ness

    View Slide

  135. ®
    thank you


    @holly_cummins

    View Slide