Dealing with legacy - the cloud native journey, part 2

Post on 27-Jan-2017

1.142 views 0 download

Transcript of Dealing with legacy - the cloud native journey, part 2

11

Ensuring Cloud Native Success: The Legacy Journey Dec. 2015

Slides: http://cote.io/legacy-cloud-native/

3

@cote – Director, Technical Marketing at Pivotal for Pivotal Cloud Foundry

Former industry analyst at 451 Research and RedMonk

Corporate Strategy & M&A at Dell Software developer Podcasts: cote.io/podcasts FierceDevOps columnist More: http://cote.io or

cote@pivotal.io

Hello!

44

Why?

5

The goal is not “cloud,” rather shifting to using software as your core enabler of business

Release weekly, if not daily

Software continually updated to match evolving

business models

IT is the enabler of growth

Software Defined BusinessFor the business “oh crap” motivations, see “The 3 Horsemen of the Digital Apocalypse” and the first part of of my DevOpsDays talk.

66

Legacy

7

“Legacy” is usually existing software that’s odious to change

“Makes all the money” so it’s mission critical

Lacks good testing, so it’s risky to change, fragile

Often built with “pre-cloud” technologies

8

Actively manage your portfolio or it will manage you

Source: “A Value Framework that Works for Transforming Your Application Portfolio,” June, 2015. See more commentary on dealing with legacy in “Dealing With The Stuff That Makes All The Money.”

Key transformation effects:

• Reduce costs to run “legacy” systems

• Free resources (time, money, attention) for “innovation”

• Waste elimination: cloud platform automates infrastructure management & “paperwork”

9

Filter projects Projects with low business value

– make it worth your time The business case hasn’t run out

yet – don’t write things off Agile Resistant Projects:

1. Tight integration and coordination across division lines

2. Company-wide and/or industry standards can not easily be changed or ignore

3. Technology ill-suited for cloud native, or not “modernized” at all

See “Migrating the Monolith,” Rohit Kelapure, Nov 2015 for more technical details.

10

Approaches for the left-overs Virtualize to control costs

and maximize management

API gateways combined with the strangler pattern

Rewriting to be cloud native

See “Migrating the Monolith,” Rohit Kelapure, Nov 2015 for more technical details.

11

Filtering for technology fit

Generally good: Stateless Horizontal scaling Well packaged Java

applications Applications that are

configured at runtime RESTful services approach

Generally bad: Reliance on local storage Manages complex background

processes Uses proprietary APIs,

hardware Manual startup/shutdown Long lived, fast connections

Sources: "Pivotal Cloud Foundry Application Migration Selection Criteria," Josh Kruck & Abby Kearns, Q1 2015; "How Do I Migrate Applications to Pivotal Cloud Foundry?" Josh Kruck, June 2015; “Case Study: Refactoring A Monolith Into A Cloud Native App” series, Jared Gordon, Aug 2015.

12

Get strict with testing

The Legacy Code DilemmaWhen we change code, we should have tests in place. To put tests in place, we often have to change code.

13

Strangle old code, perhaps replacing…one day

Sources: pattern write-up from Martin Fowler, small case studies. Picture from wikipedia’s Ficus aurea page, diagram from Branch by Abstraction write-up, 2011.

14

Review boards and other “helpful” processes Automate the helpful processes Establish trust with review

boards – small wins, etc. Expose process bottlenecks

Your process is as important as the process, change it accordingly

Sources: clip art from geralt.

15

If all this sounds hard, let that be a reminder of how important architectural and process hygiene is – start doing it right!

1717

Thanks!@cote | cote@pivotal.io

Slides: http://cote.io/legacy-cloud-native/