Special Feature - Microservices r2
Special Feature - Microservices r2
FOUNDATION OF TOMORROW’S
ENTERPRISE APPLICATIONS
June 2020
TABLE OF CONTENTS
2
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
If you consider the implication of this, what technical folks call an ‘abstraction layer’, the power of micro-
services quickly becomes apparent. If the providers of this microservice completely change the hardware,
programming language, or physical location of their data center, the user of that service is completely
unaffected as long as it continues to return the expected results in the same format. For an internal software
application, you no longer have to worry about the painstaking and expensive work of rewriting interfaces and
complex connections between systems if they are delivered by microservices. If you have a set of standardized
order management microservices, it doesn’t matter if your order management infrastructure is on a mainframe
running a COBOL application on Monday and a modern ERP system on Tuesday: the microservice should still
deliver the same results, and that change will be seamless to any other application that uses that service.
3
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
As your developer teams increase their understanding of consuming and building microservices, they’ll start to
identify key services that your company can deliver, either internally or externally. For example, you might create
an internal microservice that provides customer information that can be used by your call center, shipping applica-
tions, and customer support teams. You might consider a public microservice that provides product information,
order status, or other functionality that allows third parties to use your products or services in applications they
create, or lets partners easily connect with your back-end infrastructure quickly and easily.
Integration tools like MuleSoft, Boomi, Jitterbit, or other tools often called ‘ESBs’ (Enterprise Service Buses)
can help speed up the process of creating microservices for your systems.
4
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
legacy systems than a service that performs a discrete task. When you create these ‘monsterservices’ they’re
generally only useful in a limited number of applications, versus small, generalized services that can be used in
dozens of places.
If you must create a complex, multi-stage service, start by creating simple services that you can combine.
There’s no shame in an individual service that calls multiple services to perform its job, and by creating smaller
building blocks, you’ll ultimately have more reusable and scalable options in the long run.
The other common pitfall is creating services that are designed for a single application. For example, if I need
a tracking number for an order, it might be tempting to create an Order Tracking Number microservice that
takes in an order number and returns the tracking number. Better to create an Order Data microservice that
provides general information about the order, including the tracking number, that can be used in multiple
applications.
Larger businesses should consider an investment in microservices as a way to ease their dependency on propri-
etary and legacy systems. By providing internal microservices, they’re no longer dependent on a particular
hardware or software vendor and can upgrade components of their infrastructure without affecting large
swaths of applications. Additionally, using microservices allows for legacy data and systems to power creative
new tools. With the right microservices, you can quickly develop a mobile app that securely and easily access
data formerly locked in a mainframe. Microservices also can reduce the dependency on IT for new tools and
applications. If marketing wants to launch a new product catalog and you have a microservice, they’re no longer
dependent on IT to write interfaces or provide scarce resources.
Microservices can seem complex and confusing, causing too many IT leaders to regard them as a nice idea that
they’ll explore ‘eventually’. As you’ve seen above, they can be as simple as clicking a link.
5
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
According to respondents, the top benefits of integrating microservices ranged from faster deployment of
services (69%), and flexibility to respond to changing conditions (61%), to the ability to quickly scale up new
features into larger applications (56%), more standardization of services (42%), and reduced technical debt
(33%).
A large number of survey respondents use REST (88%), Agile (80%) Web APIs (77%), and DevOps (75%),
or a combination of the above. While containers (67%) and cloud services (66%) also ranked high. At 1%,
COBRA, was the least used, according to survey respondents.
Lack of proper skillsets and unfamiliarity with microservices, as well as too many legacy systems, and lack of
corporate support round out the most popular reasons why companies have not integrated microservices into
their applications.
The infographic on the next page contains selected details from the research. To read more findings, plus
analysis, download the full report: Research: Microservices bring faster application delivery and greater flexi-
bility to enterprise (available for TechRepublic Premium subscribers).
6
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
7
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
The possibilities become obvious rather quickly. Complex integrations are the ‘black hole’ that derails many
well-intentioned development projects, so if they can become simplified and de-risked then custom apps that
create unique advantages for your company are no longer an option of last resort. This, of course, requires
that your internal systems have a microservices layer that allows key functionality from company systems to be
delivered through standardized services.
While this may seem like a daunting task, these standardized interfaces would be designed to accomplish a
single, discrete task, hence the ‘micro’ in microservice. In traditional systems design, you might pass data to
another application that ‘takes over’ the remainder of the transaction. In a microservice environment, the
8
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
application acts like a conductor, coordinating a function by asking hundreds of different services to perform a
discrete task that’s independent of the larger transaction.
Amazon quickly realized that with all of its systems providing simple, common, and stable microservices,
other parts of the company, and ultimately the public at large, could use these services quickly to create their
own applications. Amazon, and later AWS customers around the world, were freed from the vagaries of
version upgrades, system changes, and code updates, since they could always depend on a service producing a
consistent result, irrespective of the technology used to provide that result.
TRANSITIONING TO MICROSERVICES
For starters, duplicate Amazon’s move and mandate that all new software projects be delivered through micro-
services. If that’s too challenging, it may be easier to start more simply. Probably the best place to do that
is when acquiring new software or platforms. This is easy when buying cloud software as a service, as most
providers deliver a suite of prebuilt microservices to interact with the data and business logic.
Identify some simple use cases that show the benefit of microservices. For example, if you implement a cloud-
based sales platform, you might leverage microservices to capture data on your website and feed it into the
sales system. Or, you might quickly develop a mobile or web-based app in record time that performs a specific,
meaningful task and demonstrates that microservices make IT faster and more flexible. Rather than focusing
on the technology when pitching microservices, focus on the flexibility and speed it brings to IT, which have
long been the Achilles heel when delivering integrated applications.
9
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
Thankfully, there are a variety of software platforms that provide an ‘integration layer’ which essentially
serves as a ‘translator’, integrating with your legacy tools in the technologies they understand and providing a
common, standards-based microservice on the other side. Tools like MuleSoft, Boomi, Jitterbit, and others can
quickly allow you to start capturing the benefits of microservices without wholesale updates to your existing
applications.
This provides a significant additional benefit. If you can create thoughtful microservices, replacing legacy appli-
cations simply requires changing some backend ‘plumbing’ without rebuilding the tools that depend on that
microservice.
Identify key IT services that power multiple applications and prioritize them for microservices. A shipping
company might start by building order status microservices, just as a retailer might start with inventory services.
It may also be tempting to create the ‘perfect’ microservice for each application, which accommodates every
potential scenario and permutation. This approach is a recipe for delayed rollouts and overcomplication. Seek
to keep the ‘micro’ in microservices by making each perform a discrete task. You can always combine multiple
services to perform more complex functions, just as you can expand functionality in future versions.
Finally, each service requires a published set of specifications that’s maintained on an ongoing basis. A compre-
hensive library of microservices that are not shared or well-documented accomplishes little. Remember that a
key benefit of microservices is that new applications can be built without complex IT projects and approvals,
so keeping your services updated and documented is critical for getting the benefit of these services.
There may also be some resistance by owners of the various services that will ultimately be made available via
a microservice architecture. With open services, individual teams give up some of their ‘gatekeeper’ role, which
can seem threatening. Ensure that you communicate that their span of control remains intact by preserving the
integrity of what happens ‘behind’ the microservice, and that the broader organization can rapidly benefit from
their work rather than having to wait for complex, one-off interfaces.
10
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
SOA and microservices can also exist side by side, IMAGE: GETTY IMAGES/ISTOCKPHOTO
SOA starts with an end result in mind and builds an entire enterprise architecture backward from there with
interoperability, reusability, and independence in mind. According to IBM, a well-constructed SOA uses
“common communication standards in such a way that they can be rapidly incorporated into new applications
without having to perform deep integration each time.”
11
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
In essence, SOA is a way of configuring an enterprise’s digital resources and data in such a way that it’s univer-
sally accessible to any potential business software that may need it--just add API.
Microservices are single applications built out of a bunch of independent, containerized bits that don’t have
any direct bearing on the application as a whole. A single sub-service of a microservice architecture app can be
written in a completely separate language, updated independently of the main application, can be scaled at will,
and put individuals (or teams) in complete control.
Microservices are also ideal for cloud environments, where multiple containerized elements can be plugged into
an application without needing to consider their effect on a larger software product.
Contrast that to monolithic architecture, where each element of an application is built within the application
as a whole, and no part of a piece of software can be changed or scaled without having to consider the appli-
cation as a whole.
First, there’s the issue of interoperability: Services in an SOA model are designed to report to various applica-
tions through APIs. The core concept is creating a single cooperative network architecture that is completely
platform agnostic.
That concept is antithetical to microservice architecture. According to IBM, a “microservices component that
is reused at runtime throughout an application results in dependencies that reduce agility and resilience.” In
the microservice world, it would even be preferable to duplicate code and accept data duplication to further
12
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
decouple microservice components. The goal is complete independence of each part of an app, not interoper-
ability between different ones.
This highlights another distinct difference between microservices and SOA: Data duplication. SOA’s purpose
is to eliminate any potential for duplication or fragmenting, whereas the chief goals of a microservices app are
speed and agility.
Microservices and SOA have a core architecture similarity: Both rely on containerized data. That’s where the
similarities end, though. In the case of SOA, the focus is on building a backend architecture that can deliver
information to any REST API that calls for it. For an application built on microservice architecture, the focus
is less on creating a universal backend and more on building a single application that is resilient and fast because
each of its subcomponents are entirely independent and don’t connect to each other in any common fashion.
How can you determine whether SOA or microservice architecture is better for your business?
Are you trying to build a single application or design an entire enterprise network? If it’s the former, you need
microservices; if it’s the latter, SOA is what you want.
Software-oriented architecture is an excellent way to think about building a new business network, or a way
to digitally transform an existing one suffering from fragmentation and compartmentalization. As its name
implies, it’s all about building a network designed around making it easier for software to access data when it’s
built and in the future.
Development teams or independent programmers who want to create apps that don’t rely on the fallibility of
an individual component should consider building their programs around microservices. It allows developers
to use the languages they’re comfortable with, eliminates IT’s struggles to update complex, interconnected
software, and lets products turn on a dime in a way that monolithic software could never hope to.
So, remember that microservices and SOA fill different needs and shouldn’t be confused with each other.
13
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
However, as developers take on more responsibility for operating their code (DevOps) and securing it
(DevSecOps), it drives different behavior relative to “design, what kind of monitoring you have, what kind
of tooling, how you interface with that system,” according to Jason Chan, vice-president of Information
Security at Neflix, in his Future Stack 2015 presentation. As Chan spelled out, strong microservices security is
14
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
a function of three guiding principles, all of which are ultimately tuned to making life easy for developers and
security professionals: traceability and development, continuous security visibility, and compartmentalization.
TRACEABILITY
The best security happens without a lot of extra effort, which is why the first key to security is to build it into
your continuous delivery workflow. Many companies try to manually catalog their service components with
an application risk assessment, usually populated via survey questions sent to developers. Sound familiar? It
should. This is how most companies have handled security for eons.
But it doesn’t work. First, there’s an entire science to answering these questionnaires that enables the developer
to sidestep the questions without improving security. Even if they aren’t trying to get past the security folks,
it’s not always clear what the questions mean. In other words, these risk assessments may end up giving a
“false sense of security,” Chan pointed out, which is exactly the wrong approach to securing microservices (or
anything else).
Instead, he continued, “[D]on’t...create a bunch of new tools and new dashboards that people have to go to.
[D]on’t...interrupt their workflow.” Instead, integrate with the workflows and tooling those developers are
already using. Netflix, for example, has open-sourced its continuous delivery (CD) Spinnaker tool to give devel-
opers and operations/security folks a holistic, common view of an application and its component parts, but
there are plenty of others (Ansible, Jenkins, and so on).
It’s less important which tool you use, and more important how you use it.
It’s within the CD workflow that you insert tests, restrictions on which regions for deployment (and when).
Doing so not only automates delivery of services, but it also ensures auditability. A common technique for
ensuring a new service won’t introduce security (or other) problems is to launch a ‘canary workload’ -- a new
production workload launched to a limited set of users -- and if it looks good (doesn’t trigger any of the
automated security alerts, for example), the CD tool automatically rolls it into full production.
By working within the developers’ chosen workflow, and automating as much as possible, security teams can
keep the speed/agility benefits of microservices while still ensuring security checks are in place. Which leads to
a related principle: continuous security visibility.
15
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
By employing service discovery tools (Netflix has its Penguin Shortbread application, but there are many other
options), you can gauge the riskiness of a particular service based on how many other services depend upon it
(the more services that depend on it, the higher its risk score), whether it’s exposed to external Internet traffic
(edge services get a higher risk score), and so on. This automated security risk assessment thus yields a stratifi-
cation of risk, allowing relatively scarce security people to focus their attention on the microservices with the
most exposure.
COMPARTMENTALIZATION
This principle is critical for distributed systems, and the microservices that comprise them, for two reasons. The
first is that given that all security is likely to fail at some point, you want to limit the blast radius of that failure.
The second is about confidentiality: keeping data reserved only for those who need to know.
With a monolithic application, everything is lumped together. Developers struggle to iterate on monoliths
without breaking things in the process, and every break point introduces new security issues. According to
Chan, with monolithic applications “you have very sensitive systems that have a lot of inputs and outputs, [i.e.,]
attack surface. [Applications with a large] attack surface [can] be secured, [but] it’s more difficult to do it.” It’s
also harder to verify that things are working as they should.
16
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
In a microservices context, however, security can be better because the ‘blast radius’ isn’t the entire application,
it’s just the individual services. Many security-forward companies choose to further improve on this security
posture with a token vault, where sensitive data is stored. Tokens map to this sensitive data, and those tokens
can be passed around the application without the data itself moving. The token service calls crypto infra-
structure that sits between the sensitive data and the token, protecting the data. This approach allows you to
implement much finer-grained access control, Chan said, and it’s much easier to trace what’s going on.
Disclosure: I work for AWS, but nothing herein relates directly or indirectly to my work there.
17
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
But as Steel puts it, it would have been “quite a conservative approach and it would have limited what we could
have done”.
“We would’ve built a great new credit union just like existing banks but we couldn’t have differentiated and
done our own things and added in our testability at each layer of that stack,” he told ZDNet.
At the same time, Xinja wanted to avoid going down the path of building an enterprise service bus (ESB)
service-orientated architecture (SOA), mainly because it came with “approaches of really having a centralised
type platform and centralised skillsets to be able to do those integrations that were the bottlenecks for every-
thing”, and it was also a typical approach for most financial services organisations.
What they opted for in the end was an event sourcing-based microservices architecture made up of a mix of
best-of-breed banking platforms -- including an SAP digital banking platform for its core banking platform --
and building their own integrations layers without an ESB.
“We needed to give ourselves the flexibility and freedom so we can innovate at every layer of our technology
stack,” Steel said.
“We’re architects, we believe in the principles that came out of that service-orientated architecture, so it’s kind
of what we call a post-SOA architecture where you’re dividing your banking landscape across the different
technical capabilities cleanly.
18
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
“Rather than buy an out-of-the-box platform and all those integration capabilities and hooking into all sorts of
legacy platforms and integration platforms, we decided to choose modern banking platforms, mostly born in
the cloud platforms, all integrated with great web services.
“Therefore, we could build our own microservices architecture to do that integration, which meant more
handcrafting of code than you would do with an ESB where you might use patents, frameworks, or templates.”
Steel conceded that while it was not the cheapest option nor was it the easiest at times, the pay-off has been
much higher.
“Building software is difficult to do but we found that it did mean that we were able to achieve outcomes in
integrating new capabilities so much more quickly than we’ve ever experienced,” he said.
He pointed to Xinja’s integration of Apply Pay as one example of where the decision to build its integration
stack with microservices was the right call.
“Most banks that have done Apple Pay in the last five years take about a year to do it. It’s a very big and very
complex project. You have a number of different suppliers involved, a number of integration points, and
Apple is also really anal with you about how things are going to be done,” Steel said.
Despite Xinja’s own successes, Steel believes it will take time for others in the financial sector to warm up to
building an integration stack with microservices.
“There’s scepticism about building software. Everyone’s been burnt on software build. We’ve been burnt.
Software development is always a bit of a bottomless pit. I think it will always be the case and there’s always
19
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
going to be a move towards patent-based, code generation-based, software development delivery,” he said.
He added that unlike others, Xinja’s advantage is that it has been built in the cloud and is not weighed down by
legacy infrastructure.
“The cloud is hard for existing financial services … taking existing legacy platforms and bringing them into the
cloud is a lot harder,” he said.
“You wouldn’t try to build this architecture outside of the cloud … it’s not something you can go 50-50. You
really have to embrace those patents and embrace them properly. If you try and do a hybrid thing, such as a
customer mastering over here and Kafka for securing and messaging, you’re not really embracing the patent
and it’s not really going to work.”
But whether the existing model is sustainable to maintain in the long run, Steel is optimistic that emerging tools
and platforms will help ensure it is.
“Microservices is quite fine grain. You’ve got many smaller components, each of which is relatively simple in
their own right … when you’ve got a lot of fine-grain microservices, that can become a nightmare where you
start needing registries and keeping track of who’s talking to what, what the dependencies are -- that’s always a
problem, that’s the flip side of having something highly monolithic,” he said.
“If you’re going to have something that’s fine-grain distributed, there’s great tools evolving to deal with that.
We do an awful lot of automated testing which keeps us in check and makes maintenance and managing finer
grain components a lot easier.
“The other thing is when you’ve written code to do something like integrate with some third-party systems
… it probably takes you longer to get it working in the first place, but what you have at the end of the day is
java code, so you’ve actually removed a few potential layers of complexity and loss of knowledge and under-
standing. Instead, you’ve got code that’s quite well understood.”
20
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
1. Clean up the application. This includes ensuring that the system “has good automated tests and is using
the current versions of all libraries, frameworks, and languages,” Drake says.
2. Make use of APIs. “Refactor the application into clear modules with clear APIs,” Drake says. “Don’t
allow bits of the code to reach into the modules directly. All interaction should be via the APIs presented
by the module.”
3. Separate the services: Separate a module from its application, but keep it on the same host, says Drake.
“This starts to give you some of the usefulness of totally separate microservices, but with fewer of
the operations headaches,” says Drake. There will still be communications issues to contend with, but
without the accompanying challenges that will come up once the separate components are running across
distributed networks.
21
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
4. Move the separated module to a new host. “Now you’ll have to deal with the issues surrounding
communication over a network, but you will have bought yourself a little less coupling between the two
systems,” Drake says.
5. Separate storage capabilities. Finally, Drake says, “if possible, refactor the data storage system so that
the module on the other host now has total responsibility for storage of data within its context.”
6. Consider your organizational readiness. A microservices-savvy enterprise has teams who can
provision resources on a moment’s notice, with little or no outside assistance, Drake says. “If your
organization has only one or a few people in your entire dev team who can set up new services, virtual or
otherwise, you are not ready for microservices.”
7. Be ready to monitor. “If you don’t monitor the system and application performance of your monolith,
then you will have a miserable time with microservices,” says Drake. Key metrics include “system-level
metrics (such as CPU and RAM), application-level metrics (such as request latency per endpoint, or errors
per endpoint), and business-level metrics (such as transactions per second, or revenue per second) to
understand the performance of your systems.”
8. Be well-equipped for continuous integration and continuous deployment. Drake puts it
perspective: If the monolith is lacking a good CI/CD approach, then a microservices architecture is going
to be hundred times as challenging, “Imagine having 10 teams and 100 services, all of which require
manual integration testing and deployment. Now imagine the same manual work, but with only one
monolith. How many ways can things go wrong with 100 services? How many ways with one monolith?”
22
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
Badani, writing at The Enterprisers Project, observes that the ultimate goal of containers and microservices
-- and the DevOps they enable -- is agility. “Containers corral applications in a neat package, isolated from
the host system on which they run. Developers can easily move them around during experimentation, which
is a fundamental part of DevOps. Containers also prove helpful as you move quickly from development to
production environments.”
Developers are especially enthusiastic about microservices enabled by containers for a couple of reasons,
Wilczek explains in a post in CIO. “They enable developers to isolate functions easily, which saves time and
effort, and increases overall productivity. Unlike monoliths, where even the tiniest change involves building and
deploying the whole application, each microservice deals with just one concern.”
As with any promising new technology or methodology, there are barriers to overcome, both organizational
and technological. Badini and Wilczek offer sage advice on overcoming the major speed bumps that may
flummox the move to a microservices and containerized architecture:
23
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
1. Organizational skills and readiness: Before any container of microservices effort can get underway,
people across the enterprise need to be on board with it, and ready to adapt their own mindsets. “IT
leaders driving cultural change need support from both the C-suite and evangelists in the smaller
teams,” says Badini, warning that all too often, “the easiest thing to do is just do nothing.” But today’s
hyper-competitive and hyper-fast economic environment demands the speed and agility containers and
microservices make possible. The good news, Badani adds, is “you don’t need all the resources or skills
of Facebook in order to make significant business change. Start experiments with smaller groups. As
you succeed and become more comfortable, expand out in terms of technology and talent. Encourage
people on your team to engage with their peers outside the company, to talk about technology and culture
challenges.”
2. Platform: Choice of platform is key to a container and microservices efforts. “A platform addresses
management, governance, and security concerns,” says Badani. “While there are plenty of open source
container tools to experiment with, an enterprise-grade container platform typically comprises dozens
of open source projects, including Kubernetes orchestration, security, networking, management, build
automation and continuous integration and deployment capabilities out of the box.”
3. Capacity and lifecycle management:
“Both containers and microservices can
easily be replaced and therefore tend to have
a relatively short lifespan” -- often measured
in days, says Wilczek. “The short lifespan
combined with the enormous density lead
to an unprecedented number of items that
require monitoring.” In addition, containers
need a lot of memory space. The challenge is
that “with their own operating environment
attached, images can easily reach a couple
IMAGE: HUBSPOT
of hundred megabytes in size,” Wilczek
says. He recommends ongoing lifecycle management practices -- “especially retiring old images to free up
shared resources and avoid capacity constraints.” An ability to quickly retire containers to free up memory
space requires a comprehensive lifecycle management effort.
4. Network layer: Wilczek cautions that networks -- or even virtualized network layers -- may prove to be
bottlenecks in the performance of microservices and containerized architectures, and thus require “close
monitoring in terms of performance, load balancing, and seamless interaction.”
24
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
5. Balancing legacy and cloud-native apps: Trade-offs between existing infrastructure and new, cloud-
borne applications may be a sticking point, but is normal, Badani explains. “Some CIOs still have
COBOL apps to support. Grappling with both old and new technologies, and making tradeoffs, is
normal. Some companies seek containers mostly to house cloud-native apps being created by application
development teams, including new work and revamps of existing apps. These apps are often microser-
vices-based. The goal is to break up an app into its underlying services, so teams can update the apps
independently.”
6. Monitoring: “Many traditional IT monitoring tools don’t provide visibility into the containers that make
up those microservices, leading to a gap somewhere between hosts and applications that is ultimately off
the radar,” Wilczek warns. “Organizations need to put one common monitoring in place comprising both
worlds and covering the entire IT stack - from the bottom to the top.”
7. Manageability. Organizations need to ensure that there are enough staff resources dedicated to
container and microservice deployment and management. “All too often, developers are tempted to add
new functionality by creating yet another microservice,” Wilczek says. “In no time, organizations find
themselves attempting to manage an army of containers and countless microservices competing for the
same IT infrastructure underneath.” He recommends employing “analytics tools that discover dupli-
cative services, and detect patterns in container behavior and consumption to prioritize access to systems
resources.”
8. Security. “Because containers contain system specific libraries and dependencies, they’re more prone
to be affected by newly discovered security vulnerabilities,” Badani says, who recommends the use of
“trusted registries, image scanning, and management tools” that can help automatically identify and patch
container images.’
25
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
So. Cool.
It may also mean, however, a new era of spaghetti IMAGE: MARIHA-KITCHEN, GETTY IMAGES/ISTOCKPHOTO
This also can make maintaining code more straightforward. For monolithic applications, updating code can
present a major burden because of the difficulty inherent in covering all dependencies. As Ophir Gross has
noted, “Spaghetti code is full of checks to see what interface version is being used and to make sure that the
right code is executed. It’s often disorganized and usually results in higher maintenance efforts as changes in
26
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
MICROSERVICES: THE FOUNDATION OF TOMORROW’S ENTERPRISE APPLICATIONS
It’s not, however, with its own risks. Ironically, one of those risks just might be the spaghetti code that devel-
opers embrace microservices to escape.
DISTRIBUTED SPAGHETTI
Among other complications (debugging is more complex, the difficulties associated with APIs changing over
time and ensuring the services that consume the API are updated in a timely manner, etc.), one problem with
microservices is that developers may use them to build in a similar manner to their monolithic application days.
Eijgermans explained this problem:
People are often unaware that microservices really need to be independent. For example,
you often see that all kinds of services are being made but that one database is shared.
Another problem is that people program what they were used to doing in a monolith, making
the chain of synchronous calls between services (over the network !!!) much too long.
Neither is attention paid to spaghetti structure that can arise from all kinds of services that
use each other and services are tightly coupled.
The key to designing microservices is to properly “defin[e] their boundaries and how they communicate,”
according to Marko Anastasov. “A loosely coupled service contains related behavior in one place and knows
as little as possible about the rest of the system with which it collaborates.” Anastasov’s emphasis on “loose
coupling” is critical. You want services to communicate asynchronously with a limited number of endpoints
and no shared database.
Of course this doesn’t eliminate the potential for “Spaghetti Code 2.0.” The very power and convenience that
Bala calls out can lead to developers creating all sorts of API calls to serverless functions that can get unwieldy
fast. Still, ensuring loose coupling of services can help.
Disclosure: I work for AWS, but nothing herein relates directly or indirectly to my work there.
27
COPYRIGHT ©2020 CBS INTERACTIVE INC. ALL RIGHTS RESERVED.
CREDITS
Editor In Chief ABOUT ZDNET
Bill Detwiler
ZDNet brings together the reach of global and the depth of
Editor In Chief, UK local, delivering 24/7 news coverage and analysis on the
Steve Ranger
trends, technologies, and opportunities that matter to IT
Associate Managing professionals and decision makers.
Editors
Teena Maddox ABOUT TECHREPUBLIC
Mary Weilage
TechRepublic is a digital publication and online community
Editor, Australia that empowers the people of business and technology. It
Chris Duckett provides analysis, tips, best practices, and case studies
aimed at helping leaders make better decisions about
Senior Writer
Veronica Combs technology.