Download presentation
Presentation is loading. Please wait.
Published byRudolf Lenard Wilcox Modified over 6 years ago
1
Amplifying feedback through Microservices and Containers
Meghashyam Varanasi - Associate Director Cognizant Technology Solutions
2
Introduction to the Topic Microservices Microservices Vs Services
Abstract Introduction to the Topic Microservices Microservices Vs Services Bottom up Testing Pyramid for Microservices Functional Testing in a Microservices world Non Functional Testing in a microservices world Containers QA benefits with container adoption Canary releases and role of container testing
3
Understanding the Topic
Microservices Containers 3 Principles of DevOps Service 1 Service 2 Service 3 Service 4 Systems Thinking Continual Experimentation Service 1 Service 2 Service 3 Feedback Amplification Small Velocity Autonomous Service Variation Choice of Technology Visualization Independent deployment
4
Services Vs. Micro services
Autonomous Decentralized Independently Scalable Technology Diversity Loosely coupled Microservice characteristics Microservice shortcomings Each service is independent and each service is a new project, each service can be developed in any language that is best fits for the requirement. Code base will be very small, and the developer will know the code very well. When one service needs to talk with another service, they can talk via API, specifically by a REST service. Monitoring these services adds to the overhead. On service failure, tracking it down can be a painstaking job. With micro services, each service communicates through API/remote calls, which have more overhead than with monolithic software's inter-process communication calls.
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
Containers Virtual Machines 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. 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.
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. He can be
15
Thank You!!!
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.