Welcome!

Microservices Expo Authors: Elizabeth White, Pat Romanski, Liz McMillan, Flint Brenton, Yeshim Deniz

Related Topics: @DevOpsSummit, Microservices Expo, Containers Expo Blog, @CloudExpo, @DXWorldExpo

@DevOpsSummit: Blog Feed Post

How Testing Changes in Component-Based Architectures | @DevOpsSummit #API #DevOps

Large software companies use components every day to create experiences for the customer

What Is Component Based Architecture?
By Justin Rohrman

Imagine building your software like it was ordering furniture from Ikea. You pick out a desk, add a corner piece, raise it up to be a standing desk with some props for the legs, and add small things like organizers to better fit how your work. Things are modular, you can add and remove bits and pieces to build the projects that fits the customer's needs.

In software projects, this is usually done with a configuration flag that lives in either a system configuration file on the server, or in the database. This flag controls the visibility of all the things in a feature and can be turned on and off as needed. At worst, you might have to restart apache in between. Another way to build components is through a set of APIs. Programmers create the front-end, then mix and match APIs that already exist to create the back-end.

Large software companies use components every day to create experiences for the customer. The Amazon.com homepage, for example, is actually a collection of components pulled into a single logical frame. Google makes its MapReduce algorithm, which can search the web, available as a service to all employees. Combine MapReduce and a street-address-to-latitude-longitude conversion API, and suddenly Google Maps can inform you of not just the fastest route, but what restaurants, hotels, and gas stations will be on your way.

Building with components isn't just a more powerful approach to software architecture; it also speeds up the whole software delivery process.

Faster Releases Without Back & Fourth Between Developers and Testers
In many releases, features or fixes are often added in at the last minute, which could mean one final whole-system check before giving permission to deploy code to production. That also means any previous testing is done without that last piece, which introduces risks of its own. A lot of this is due to features getting to the test group late in the implementation process, or a lot of back-and-forth churn between testers and developers working to fix bugs. If the feature is built as a component, something that can be added or subtracted with bounded risk, the team can flip the feature flag off for the part that is running behind and go ahead and release the parts that are done.

Releasing software faster means you are providing value to the customers faster. It also means that, with a flexible release schedule, you might be able to do away with the classic release death march where a team spends weeks or months discovering and fixing bugs before a product can go out.

The other important thing about quickening the release pace is that if something does go terrible wrong, rather than dealing with rollbacks and database versioning, you can turn the offending feature off. Hotfixes to production under the stress of customers not being able to do anything at all often lead to more hotfixes.

Strategy for Complex End-to-End Testing
In a component architecture, the overall strategy often shifts from simply testing to discover and fix potential problems, to focusing on late detection and reducing exposure to problems when they do happen. There are usually layers of programmatic checks to confirm that the program does what the developers think it should do at the unit level, or the API level, and maybe in the UI as well. But, very little real testing happens.

This strategy can work in some contexts, sometimes, especially when the software is free and the primary users are actually creating data for other people to buy. This is the case with Facebook, Twitter, and to some extent GitHub.

Since there should already be good coverage of lower level functionality, most value can be found in testing end-to-end scenarios. While programmed checks are looking at the same bits of code every time they are run, and are often looking at very simple problems, end-to-end testing performed by a person can explore more complex and varied possibilities that a user might actually do.

End-to-end testing can help discover black swans, those surprising problems with massive implications that most programmatic checks will not find.

Reduced Need for Testing Before Production with Component Architecture
If your strategy has moved from testing and problem discovery to lowering the amount of exposure a problem has, monitoring will become more and more important. Component architectures can reduce the need for pre-release testing, but there has to be a contingency plan in case something goes wrong.

Imagine a scenario where a new type of payment processing is added to a website. The feature is released over night, but night time here is daytime somewhere else and the feature is getting used almost immediately. Somehow, the team missed a critical scenario and when used in a certain version of FireFox, hangs the browser. If you have monitoring set up, notifications will start flying, and the feature can be shut off quickly.

Replicating Customer Configurations for Checking Software Quality
Managing test environments can get tricky with components. Often, there will be a constant stream of commits and deploys to the test environment. In larger companies, this can mean hundreds of people pushing changes all on top of each other all at the same time. Unsurprisingly, this leads to a completely broken environment where it is near impossible to discover which change caused which problem or which two features won't play well together.

At one client, we had a product where nearly every feature could be turned on or off. Each customer wanted the product configured slightly different. Initially, out strategy was to leave everything turned on all the time but this resulted in problems from features that were not designed to work together. The release schedule was a little slower there, so we were able to replicate key customer configurations for testing.

Organizations that are constantly pushing to a test environment might compromise by creating a special environment using a cut of the latest release version. Testing in production is a cliché at this point, but occasionally it is the only choice.

Why - and How - to Get Started
There are plenty of reasons you might want to switch to a component-based architecture. You may want to recover from disaster more quickly, reduce regression test time, or eliminate costly hardening and coordination time. How to start begins with defining a single service - just one - that will be reusable, along with one consumer for that API. The API should be new development. It rarely makes sense to rewrite old code from scratch, but new feature development is already funded. Once that API is in place the organization can begin the conversation about the registration of APIs, signature, and versions. For now, start with one API, learn something, and see how test strategy changes.

Conclusion
The climb is hard one, but the view from the top is worth it.

Component based architectures are the exact opposite of a monolith. Rather than one large, usually dangerous to change product, you get pieces of a puzzle that can be added and removed. These pieces make for a safer development environment, new styles of testing, and hopefully a better user experience.

How has working with component-based architecture affected your work? We would love to hear your story.

Read the original blog entry...

More Stories By SmartBear Blog

As the leader in software quality tools for the connected world, SmartBear supports more than two million software professionals and over 25,000 organizations in 90 countries that use its products to build and deliver the world’s greatest applications. With today’s applications deploying on mobile, Web, desktop, Internet of Things (IoT) or even embedded computing platforms, the connected nature of these applications through public and private APIs presents a unique set of challenges for developers, testers and operations teams. SmartBear's software quality tools assist with code review, functional and load testing, API readiness as well as performance monitoring of these modern applications.

@MicroservicesExpo Stories
In his session at Cloud Expo, Alan Winters, U.S. Head of Business Development at MobiDev, presented a success story of an entrepreneur who has both suffered through and benefited from offshore development across multiple businesses: The smart choice, or how to select the right offshore development partner Warning signs, or how to minimize chances of making the wrong choice Collaboration, or how to establish the most effective work processes Budget control, or how to maximize project result...
"DivvyCloud as a company set out to help customers automate solutions to the most common cloud problems," noted Jeremy Snyder, VP of Business Development at DivvyCloud, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
Explosive growth in connected devices. Enormous amounts of data for collection and analysis. Critical use of data for split-second decision making and actionable information. All three are factors in making the Internet of Things a reality. Yet, any one factor would have an IT organization pondering its infrastructure strategy. How should your organization enhance its IT framework to enable an Internet of Things implementation? In his session at @ThingsExpo, James Kirkland, Red Hat's Chief Archi...
Don’t go chasing waterfall … development, that is. According to a recent post by Madison Moore on Medium featuring insights from several software delivery industry leaders, waterfall is – while still popular – not the best way to win in the marketplace. With methodologies like Agile, DevOps and Continuous Delivery becoming ever more prominent over the past 15 years or so, waterfall is old news. Or, is it? Moore cites a recent study by Gartner: “According to Gartner’s IT Key Metrics Data report, ...
In his general session at 19th Cloud Expo, Manish Dixit, VP of Product and Engineering at Dice, discussed how Dice leverages data insights and tools to help both tech professionals and recruiters better understand how skills relate to each other and which skills are in high demand using interactive visualizations and salary indicator tools to maximize earning potential. Manish Dixit is VP of Product and Engineering at Dice. As the leader of the Product, Engineering and Data Sciences team at D...
Without a clear strategy for cost control and an architecture designed with cloud services in mind, costs and operational performance can quickly get out of control. To avoid multiple architectural redesigns requires extensive thought and planning. Boundary (now part of BMC) launched a new public-facing multi-tenant high resolution monitoring service on Amazon AWS two years ago, facing challenges and learning best practices in the early days of the new service.
In his keynote at 19th Cloud Expo, Sheng Liang, co-founder and CEO of Rancher Labs, discussed the technological advances and new business opportunities created by the rapid adoption of containers. With the success of Amazon Web Services (AWS) and various open source technologies used to build private clouds, cloud computing has become an essential component of IT strategy. However, users continue to face challenges in implementing clouds, as older technologies evolve and newer ones like Docker c...
We all know that end users experience the Internet primarily with mobile devices. From an app development perspective, we know that successfully responding to the needs of mobile customers depends on rapid DevOps – failing fast, in short, until the right solution evolves in your customers' relationship to your business. Whether you’re decomposing an SOA monolith, or developing a new application cloud natively, it’s not a question of using microservices – not doing so will be a path to eventual b...
We all know that end users experience the internet primarily with mobile devices. From an app development perspective, we know that successfully responding to the needs of mobile customers depends on rapid DevOps – failing fast, in short, until the right solution evolves in your customers' relationship to your business. Whether you’re decomposing an SOA monolith, or developing a new application cloud natively, it’s not a question of using microservices - not doing so will be a path to eventual ...
We all know that end users experience the internet primarily with mobile devices. From an app development perspective, we know that successfully responding to the needs of mobile customers depends on rapid DevOps – failing fast, in short, until the right solution evolves in your customers' relationship to your business. Whether you’re decomposing an SOA monolith, or developing a new application cloud natively, it’s not a question of using microservices - not doing so will be a path to eventual ...
All organizations that did not originate this moment have a pre-existing culture as well as legacy technology and processes that can be more or less amenable to DevOps implementation. That organizational culture is influenced by the personalities and management styles of Executive Management, the wider culture in which the organization is situated, and the personalities of key team members at all levels of the organization. This culture and entrenched interests usually throw a wrench in the work...
Docker is sweeping across startups and enterprises alike, changing the way we build and ship applications. It's the most prominent and widely known software container platform, and it's particularly useful for eliminating common challenges when collaborating on code (like the "it works on my machine" phenomenon that most devs know all too well). With Docker, you can run and manage apps side-by-side - in isolated containers - resulting in better compute density. It's something that many developer...
JetBlue Airways uses virtual environments to reduce software development costs, centralize performance testing, and create a climate for continuous integration and real-time monitoring of mobile applications. The next BriefingsDirect Voice of the Customer performance engineering case study discussion examines how JetBlue Airways in New York uses virtual environments to reduce software development costs, centralize performance testing, and create a climate for continuous integration and real-tim...
Agile has finally jumped the technology shark, expanding outside the software world. Enterprises are now increasingly adopting Agile practices across their organizations in order to successfully navigate the disruptive waters that threaten to drown them. In our quest for establishing change as a core competency in our organizations, this business-centric notion of Agile is an essential component of Agile Digital Transformation. In the years since the publication of the Agile Manifesto, the conn...
The next XaaS is CICDaaS. Why? Because CICD saves developers a huge amount of time. CD is an especially great option for projects that require multiple and frequent contributions to be integrated. But… securing CICD best practices is an emerging, essential, yet little understood practice for DevOps teams and their Cloud Service Providers. The only way to get CICD to work in a highly secure environment takes collaboration, patience and persistence. Building CICD in the cloud requires rigorous ar...
"This all sounds great. But it's just not realistic." This is what a group of five senior IT executives told me during a workshop I held not long ago. We were working through an exercise on the organizational characteristics necessary to successfully execute a digital transformation, and the group was doing their ‘readout.' The executives loved everything we discussed and agreed that if such an environment existed, it would make transformation much easier. They just didn't believe it was reali...
"Opsani helps the enterprise adopt containers, help them move their infrastructure into this modern world of DevOps, accelerate the delivery of new features into production, and really get them going on the container path," explained Ross Schibler, CEO of Opsani, and Peter Nickolov, CTO of Opsani, in this SYS-CON.tv interview at DevOps Summit at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA.
The purpose of this article is draw attention to key SaaS services that are commonly overlooked during contact signing that are essential to ensuring they meet the expectations and requirements of the organization and provide guidance and recommendations for process and controls necessary for achieving quality SaaS contractual agreements.
What's the role of an IT self-service portal when you get to continuous delivery and Infrastructure as Code? This general session showed how to create the continuous delivery culture and eight accelerators for leading the change. Don Demcsak is a DevOps and Cloud Native Modernization Principal for Dell EMC based out of New Jersey. He is a former, long time, Microsoft Most Valuable Professional, specializing in building and architecting Application Delivery Pipelines for hybrid legacy, and cloud ...
The “Digital Era” is forcing us to engage with new methods to build, operate and maintain applications. This transformation also implies an evolution to more and more intelligent applications to better engage with the customers, while creating significant market differentiators. In both cases, the cloud has become a key enabler to embrace this digital revolution. So, moving to the cloud is no longer the question; the new questions are HOW and WHEN. To make this equation even more complex, most ...