Download presentation
Presentation is loading. Please wait.
Published byDarcy Lambert Freeman Modified over 6 years ago
1
Amplifying feedback through Microservices and Containers
Meghashyam Varanasi - Associate Director Cognizant Technology Solutions
2
01 04 02 05 03 06 Introduction to the Topic
Functional / Non Functional Testing Micro services Vs Services 02 05 QA benefits with Containers Bottom up Testing Pyramid 03 06 Canary releases & role of container QA
3
Understanding the Topic
3 Principles of DevOps Microservices Containers Traditional Micro Services One Block 1 2 3 4 5 6 8 Systems Thinking Continual Experimentation Feedback Amplification Small Autonomous Choice of Technology Service Velocity Variation Visualization Independent deployment
4
Services Vs. Micro services
Traditional Services Micro Services Autonomous Decentralized Independently Scalable Technology Diversity Loosely coupled Characteristics Shortcomings Services are independent, cater to be new projects and language agnostic Bits of code comprise services and are loosely packed Intercom via API, specifically by a REST service Service monitoring adds to overheads Tracking service failures is a painstaking job API calls are sometimes more of an overhead than the monolith intercommunication
5
Layers of Testing in Micro services
GUI Layer E2E Integrated Systems Test Verify that a system meets external requirements and achieves its goals, testing the entire system, from end to end. Verify interactions at the boundary of an external service asserting that it meets the contract expected by a consuming service. Contract Test Limit the scope of the exercised software to a portion of the system under test, manipulating the system through internal code interfaces and using test doubles to isolate the code under test from other components. Component Test [Out Process & In Process] Exercise the smallest pieces of testable software in the application to determine whether they behave as expected. Unit Test
6
Microservice – Functional Testing at various layers
Unit Testing Component Testing Core unit level functionality testing Test the lowest level of code Full functionality testing of service Similar to White box testing Contract Testing Integrated Systems Testing Test the contracts the are agreed with other components/services Interactions are verified at the boundary Data flows, communication paths, Interactions among microservices Integrations code, Protocol level issues End to End Testing Full-fledged testing by covering the overall application in test, infrastructure related items such as firewalls, proxies, load balancer
7
Microservice – Non Functional Testing
Performance Testing Session Management & Cache Testing Individual microservices need to be tested as per the desired levels System wide performance testing Session handling across the Microservices Caching at the Microservice & system level Fail Over and Recovery Testing Load Balancing Testing Build a strategy for fail over and recovery of individual services & test the same Ensure that the containers are instantiated and load balanced as per the design (Prod)
8
Parallel Testing with Microservices
Build Unit Test Quality Scan (Sonar) Component Test Contract Tests Deploy to Dev Contract Tests Deploy to Test Contract Tests Service 4 Build Unit Test Quality Scan (Sonar) Component Test Contract Tests Deploy to Dev Contract Tests Deploy to Test Contract Tests Integrated Systems Test Deploy to Prod E2E Tests Service 2 Build Unit Test Quality Scan (Sonar) Component Test Contract Tests Deploy to Dev Contract Tests Deploy to Test Contract Tests QG1: Unit Test, Code Coverage ,Static Analysis for critical and major violations – Warning Threshold QG2: Contract Test QG3: Contract Test , Static Analysis for critical and major violations – Error Threshold QG4: Contract Test QG5: Integration Execution status & Test cases in passed state Any open Critical or major defects QG6: E2E Execution status & Test cases in passed state – Any open Critical or major defects Service 3 Build Unit Test Quality Scan (Sonar) Component Test Contract Tests Deploy to Dev Contract Tests Deploy to Test Contract Tests
9
What is a Container A Technology Problem A Shipping Industry Problem A Shipping Industry Solution
10
Container/ Docker in Pictures – Virtual Machine Vs Container
Virtual Machines Containers Vs Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers take up less space than VMs (container images are typically tens of MBs in size), and start almost instantly. Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, one or more apps, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.
11
QA Benefits of Containers
Ease of creating QA environments Run more tests and Test faster` Ability to create and terminate containers at will helps QA teams to bring up Test Environment with ease Parallel tests can be executed on multiple containers in the test environment Improved confidence in the production system Run testing in environment with slight variation Lesser environment/configuration mismatch issues Improved confidence in the production system Maintain & Test multiple environments with slight variation depending on the need
12
Canary Release – Container Advantages
Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody. Canary Release Blue Green Deployments Canary Release - Fail Fast to Amplify Feedback When running multiple versions of an application, one needs a quickly way to create copies of the application and make configuration changes. This is possible with containers, as they can be spun up in seconds, and abstract away the application from the operating system. Container is ideal for powering canary releases and testing them with confidence.
13
References & Appendix https://en.wikipedia.org/wiki/Microservices
14
Author Biography Meghashyam Varanasi has about 15 years of experience in IT and ITes industry. He holds an MBA from IIM Ahmedabad & B.Tech Computer science degree. He is also AWS, PMP, ITIL certified besides few other technology and domain certifications. Over the years he has been working in solving various customer problems in the technology leadership space.
15
Q&A
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.