SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Intern – Balance Tracker
Asmita Sharma – MCA 2012-15
Profile
 Name – Asmita Sharma
 Roll No. – 06
 Year – 2012- 2015
 University – Delhi University
 University Mentor – Ms. Neelima
Gupta
 Organization – Amazon Inc.
 Manager – Mr. Ramesh Krishna
Kumar
 Mentor – Itiyama Sadana
 Team – BTS
 Platform – Ecommerce Payments
 Role – Software Development
Engineer Intern
 Internship Start Date – 16 Feb 2015
 Internship End Date – 15 Aug 2015
Development Environment
JavaS3
Perl
JSONJunit
Spring
Brazil
Coral
Git
Apollo
Odin
SQS
Easy
Mock
Log4j
Dynamo
DB
Pipelines
Version
Sets
Eclipse
Internship Road Map
I am here.
Glossary
 Pipeline : A tool for modeling your release process and adding automation to it.
 Version Set : A snapshot of application dependencies.
 SQS : Simple Queuing Service
 DynamoDB : NoSQL Database
 S3 : Simple Storage Service
 Workflow : Sequence of executable steps.
 SWF : Simple Workflow
 Environment Stages : Association between hosts and Apollo environments.
 Alpha : Environment stage receiving no traffic.
 Beta : Environment stage receiving minimal traffic for testing.
 Prod : Environment stage receiving real-time traffic.
BTS - Overview
 BTS (Balance Tracking System) is a Global Stored Value Platform of Amazon.
 BTS is a part of ecommerce payments platform of Amazon.
 It allows any business in Amazon to create instruments and track funds movement for
them.
 It also provides simple APIs for querying balance of an instrument and history of fund
movement transactions done on an instrument.
Operational Task - Overview
 Objective : To migrate packages from JAVA -
1.7 to JAVA - 1.8
 Packages :
 PerseusClient
 PerseusClientInterface
 PerseusTestClient
 PerseusTestSuite
 MonadArchivalBusinessClient
 MonadArchivalLocator
 Pipelines :
 PerseusClient-development
 MonadArchivalPerseusClient/development
 SubTasks :
 Code Change
 Merge Dependencies
 Testing
 Deployment
 Migrate Pipelines
Operational Task – Code Change
 Changes to Config file involved adding,
removing and updating versions of build
and runtime dependencies to latest versions
supporting JAVA 8.
 Config file changes also involved resolving
conflicting dependencies of the package
with it’s upstream and downstream
packages.
 Changes to build.xml involved adding
properties for classpath of new packages
and few more changes to make upstream
JAVA 7 packages compatible with JAVA 8
migrated package.
 Changes to Spring configuration xml files
involved modification of syntax for
dependencies migrated to latest versions
supporting JAVA 8.
 Changes to Spring configuration xml files
also involved using classpath approach for
integrating spring packages instead of
providing url of spring packages.
Operational Task – Merge dependencies
 Live is a version set which contains all the versions of all the packages required within
amazon.
 Every package corresponds to a version set which contains all the dependencies of the
packages in that version set.
 To upgrade or add a new version of any dependency, we need to merge that
dependency into the version set from live.
Operational Task – Testing
 A package is first tested in the workplace itself using brazil CLI commands and targets
specified in build.xml.
 After these tests are passed, any package dependent on this package is merged to
workspace and tested to run with these changes.
 When above tests pass successfully, peer review is done and suggested improvements
are incorporated.
 After peer review is complete , the package is pushed to a temporary branch of the
repository.
Operational Task – Deployment
 The package from the temporary branch is build into the version set and deployed to the
pipeline.
 It is tested at various stages (namely Alpha and Beta) of pipeline through regression
suites.
 After it passes these stages and logs of the hosts at these stages are verified, it is
deployed to Prod.
Operational Task – Migrate Pipelines
 Migrating pipeline involves merging all packages migrated to Java 8 that belong to that
pipeline or are a dependency of the packages belonging to the pipeline.
 Any conflicts arising while merging these packages have to be resolved and then
merged again.
 Logs of hosts at each stage (Alpha , Beta, Prod) have to be verified after this step also.
Minor Project
 Objective : To remove reconciliation from
PerseusClient/development-clone and
MonadBalanceServiceListener pipeline.
 Packages :
 PerseusClient
 PerseusClientInterface
 PerseusTestClient
 PerseusTestSuite
 NotificationParser
 ModelConverter
 BalanceUpdateBusinessClient
 BalanceQueryServiceSAO
 SubTasks :
 Code Change
 Modifying Regressions
 Modifying Unit Test Cases
 Resetting AWS Credentials
 Testing
 Major Version Upgrade
 Write Change Management (CM)
Document
 Deployment
Minor Project – Code Change
 Removing Tracker Table and Marker Table instances along with their interface and unit test cases.
 Removing all SWF (Simple Workflow) workflows and corresponding unit tests.
 Removing dependencies from Config file which are no longer needed.
 Removing brazil-config file properties that are no longer required.
 Removing unnecessary targets and properties from build.xml.
 Removing reconciler instances from all packages.
 Deleting spring configuration files corresponding to reconciler .
 Removing all packages used by reconcilera which are no longer required.
Minor Project – Modifying Regressions
 Removing DynamoDB instances previously used by tracker table and marker table.
 Modifying regressions to test only notification functionality and neglect reconciliation.
 Events in modified regression suite will not be dropped to test reconciler functionality.
 All regressions related to reconciler and workflows will be deleted.
 In modified regression suite, only notification listener will be tested by updating a dummy instrument
and verifying that it’s notification reaches event listener through SQS (Simple Queuing Service).
 Reconciler instances and unnecessary dependencies will be removed from Config and xml files.
Minor Project – Modifying Unit Test Cases
 Added unit test for Event Details class
 Added spring beans to set S3 (Simple Storage Service) and AWS (Amazon Web Services) credentials
and configured the same in spring configuration xml files and brazil-config.
 Removed unit test cases for workflows and dynamoDB tables.
 Removed unit test cases involving missing sequence number tests and updated event listener test for
the same.
 Modularized a function by shifting s3 upload functionality from the function to a separate method.
Minor Project – Resetting AWS Credentials
 Earlier the AWS credentials were set using Odin which did not allow the credentials to be seamlessly
retrieved dynamically.
 Hence, used AWSCredentialProvider to set AWS credentials for SQS in PerseusClient and
PerseusTestClient using spring beans and brazil-config.
 This approach eliminates the race condition where dynamic credentials could change in between
calls to getAccessKey/getSecretAccessKey/getSessionToken and leave the customer with invalid
credentials.
 This also makes it very easy for the AWSCredentialsProvider implementation to return different types of
credentials objects.
Minor Project – Testing
 Created a child environment of the Alpha stage of the PerseusClient-development
pipeline and deployed it on local machine using Apollo.
 Attached my workspace and modified packages to this child environment using brazil.
 Activated the child environment using brazil.
 Logged in to the remote host set up at Alpha stage of pipeline using SSH command.
 Verified the logs running on the host.
 Deactivated the parent environment.
 Logged in to the SWF console and verified that the workflows have stopped executing.
Minor Project – Major Version Upgrade
 Upgraded the major version of all packages to 2.0.
 Changes were made to Config file and build.xml file of all packages.
Major Project
 Objective : To support Query APIs on S3.
 API:
 GetEvent()
 GetInstrumentEvents()
 GetChildEvents()
 GetInitializeStatus()
 SubTasks :
 Data Analysis
 Design Approach
 Write Design Document
 Environment Setup
 Code Development
 Writing Unit Tests
 Deriving and Coding Regressions
 Testing
 Deployment
Major Project – Data Analysis
 Objective : To analyze up to 3 months old
logs to gather requirements.
 API :
 GetInstrumentEvents()
 SubTasks :
 Figure out data required from logs
 Write Script to gather data from logs
 Run script of hosts containing logs
 Post-process data for concluding
requirements
 Represent data graphically
 Output :
 Domains accessing more than year old
events
 Total number of events returned by
each API call
 Number of more than year old , more
than six month old and more than three
month old events returned by each API
call
 Number of calls returning more than
year old events made by each domain
 Difference between API call time and
creation time of oldest event returned
by each API call
Major Project – Design Approach
 Objective : To come up with an approach
that best fits the requirements of all the four
APIs with optimal use of resources as per the
required performance.
 SubTasks :
 Understand the functionality , input
fields and output fields of the APIs
 Figure out the required latencies
 Analyze available tools for suitability as
per the requirements
 Devise design approaches
 Calculate storage, latencies and cost
metrics for each approach
 Analyze feasibility, simplicity of
development, scalability and
maintenance of each approach
 Choose between Sync and Async path
 Compare candidate approaches
 Choose the best fit
Major Project – Design Document Index
1.1 Prior Knowledge
1.1.1 APIs
1.1.2 EventID Format
1.1.3 InstrumentID Format
1.1.4 S3 File Format
1.2 Data Analysis
1.2.1 Script
1.2.2 Requirements
1.3 Design Approach
1.3.1 Storing S3 files on hourly basis and
scanning files for required instrument
1.3.2 Creating index on instrument ID per day
1.3.2.1 Index Structure
1.3.2.1.1 Start_File and End_File field
size calculation
1.3.2.2 Metrics
1.3.2.3 Cost of storing indexes in S3
1.3.2.4 Cost of storing indexes in
DynamoDB
1.3.2.5 Comparison
1.3.3 Creating instrument level indexes
1.3.4 Using CloudSearch to index S3 files
1.3.4.1 Costing
Yet To Do…
 Minor Project
 Deployment
 Writing Change Management
Document
 Major Project
 Environment Setup
 Code Development
 Writing Unit Tests
 Deriving and Coding Regressions
 Testing
 Deployment
Thank you

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to Microsoft R (Graph)
Introduction to Microsoft R (Graph)Introduction to Microsoft R (Graph)
Introduction to Microsoft R (Graph)Cheah Eng Soon
 
Introduction to Microsoft R
Introduction to Microsoft RIntroduction to Microsoft R
Introduction to Microsoft RCheah Eng Soon
 
FAST for SharePoint Deep Dive
FAST for SharePoint Deep DiveFAST for SharePoint Deep Dive
FAST for SharePoint Deep Diveneil_richards
 
Implementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareImplementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareXebiaLabs
 
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...Jitendra Bafna
 
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...confluent
 
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil Sawhney
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil SawhneyService Discovery in Distributed System with DCOS & Kubernettes. - Sahil Sawhney
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil SawhneyKnoldus Inc.
 
Integrate UFT with Jenkins Guide
Integrate UFT with Jenkins GuideIntegrate UFT with Jenkins Guide
Integrate UFT with Jenkins GuideYu Tao Zhang
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDFMayank Kumar
 
Reactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring BootReactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring BootVMware Tanzu
 
Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Sam Brannen
 
Code Upload Challenge on EvalAI
Code Upload Challenge on EvalAICode Upload Challenge on EvalAI
Code Upload Challenge on EvalAIKartik Verma
 
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...confluent
 
Delivery pipelines at Symphony Talent - Present and Future
Delivery pipelines at Symphony Talent - Present and FutureDelivery pipelines at Symphony Talent - Present and Future
Delivery pipelines at Symphony Talent - Present and FutureNathan Jones
 
Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersWSO2
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connectconfluent
 
The future of paas is serverless
The future of paas is serverlessThe future of paas is serverless
The future of paas is serverlessYan Cui
 

Was ist angesagt? (18)

Introduction to Microsoft R (Graph)
Introduction to Microsoft R (Graph)Introduction to Microsoft R (Graph)
Introduction to Microsoft R (Graph)
 
Introduction to Microsoft R
Introduction to Microsoft RIntroduction to Microsoft R
Introduction to Microsoft R
 
FAST for SharePoint Deep Dive
FAST for SharePoint Deep DiveFAST for SharePoint Deep Dive
FAST for SharePoint Deep Dive
 
Implementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise MiddlewareImplementing Continuous Delivery with Enterprise Middleware
Implementing Continuous Delivery with Enterprise Middleware
 
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
MuleSoft Surat Virtual Meetup#31 - Async API, Process Error, Circuit Breaker ...
 
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
Lessons Learned Building a Connector Using Kafka Connect (Katherine Stanley &...
 
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil Sawhney
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil SawhneyService Discovery in Distributed System with DCOS & Kubernettes. - Sahil Sawhney
Service Discovery in Distributed System with DCOS & Kubernettes. - Sahil Sawhney
 
Integrate UFT with Jenkins Guide
Integrate UFT with Jenkins GuideIntegrate UFT with Jenkins Guide
Integrate UFT with Jenkins Guide
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
Reactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring BootReactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring Boot
 
Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2Testing Web Apps with Spring Framework 3.2
Testing Web Apps with Spring Framework 3.2
 
Code Upload Challenge on EvalAI
Code Upload Challenge on EvalAICode Upload Challenge on EvalAI
Code Upload Challenge on EvalAI
 
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...
Kafka on Kubernetes: Does it really have to be "The Hard Way"? (Viktor Gamov,...
 
Delivery pipelines at Symphony Talent - Present and Future
Delivery pipelines at Symphony Talent - Present and FutureDelivery pipelines at Symphony Talent - Present and Future
Delivery pipelines at Symphony Talent - Present and Future
 
Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA Testers
 
From Zero to Hero with Kafka Connect
From Zero to Hero with Kafka ConnectFrom Zero to Hero with Kafka Connect
From Zero to Hero with Kafka Connect
 
The future of paas is serverless
The future of paas is serverlessThe future of paas is serverless
The future of paas is serverless
 

Ähnlich wie MidSem

Modern CI/CD in the microservices world with Kubernetes
Modern CI/CD in the microservices world with KubernetesModern CI/CD in the microservices world with Kubernetes
Modern CI/CD in the microservices world with KubernetesMikalai Alimenkou
 
Automated DevOps Workflows with Chef on AWS
Automated DevOps Workflows with Chef on AWSAutomated DevOps Workflows with Chef on AWS
Automated DevOps Workflows with Chef on AWSAmazon Web Services
 
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023VMware Tanzu
 
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...Amazon Web Services
 
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSC
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSCWinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSC
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSCWinOps Conf
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformRonak Banka
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel PartnersCraeg Strong
 
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...Amazon Web Services
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build PipelineSamuel Brown
 
Azure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web ServicesAzure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web ServicesBob German
 
CON302_Building a CICD Pipeline for Containers on Amazon ECS
CON302_Building a CICD Pipeline for Containers on Amazon ECSCON302_Building a CICD Pipeline for Containers on Amazon ECS
CON302_Building a CICD Pipeline for Containers on Amazon ECSAmazon Web Services
 
Shuvam dutta | Performance tester
Shuvam dutta | Performance testerShuvam dutta | Performance tester
Shuvam dutta | Performance testerShuvam Dutta
 
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB201904_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019Kumton Suttiraksiri
 
Netserv Software Testing
Netserv Software TestingNetserv Software Testing
Netserv Software Testingsthicks14
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationAmazon Web Services
 
20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01Scott Miao
 
Functional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and HudsonFunctional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and HudsonDavid Jellison
 

Ähnlich wie MidSem (20)

Modern CI/CD in the microservices world with Kubernetes
Modern CI/CD in the microservices world with KubernetesModern CI/CD in the microservices world with Kubernetes
Modern CI/CD in the microservices world with Kubernetes
 
Automated DevOps Workflows with Chef on AWS
Automated DevOps Workflows with Chef on AWSAutomated DevOps Workflows with Chef on AWS
Automated DevOps Workflows with Chef on AWS
 
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023
Simplify and Scale Enterprise Spring Apps in the Cloud | March 23, 2023
 
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
AWS re:Invent 2016: Building a Platform for Collaborative Scientific Research...
 
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSC
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSCWinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSC
WinOps Conf 2016 - Ed Wilson - Configuration Management with Azure DSC
 
MoT Athens meets Thessaloniki Software Testing & QA meetup
MoT Athens meets Thessaloniki Software Testing & QA meetupMoT Athens meets Thessaloniki Software Testing & QA meetup
MoT Athens meets Thessaloniki Software Testing & QA meetup
 
Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
20211028 ADDO Adapting to Covid with Serverless Craeg Strong Ariel Partners
 
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
AWS re:Invent 2016: Infrastructure Continuous Delivery Using AWS CloudFormati...
 
Anatomy of a Build Pipeline
Anatomy of a Build PipelineAnatomy of a Build Pipeline
Anatomy of a Build Pipeline
 
Azure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web ServicesAzure for SharePoint Developers - Workshop - Part 3: Web Services
Azure for SharePoint Developers - Workshop - Part 3: Web Services
 
CON302_Building a CICD Pipeline for Containers on Amazon ECS
CON302_Building a CICD Pipeline for Containers on Amazon ECSCON302_Building a CICD Pipeline for Containers on Amazon ECS
CON302_Building a CICD Pipeline for Containers on Amazon ECS
 
Shuvam dutta | Performance tester
Shuvam dutta | Performance testerShuvam dutta | Performance tester
Shuvam dutta | Performance tester
 
Shuvam dutta
Shuvam duttaShuvam dutta
Shuvam dutta
 
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB201904_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
 
Netserv Software Testing
Netserv Software TestingNetserv Software Testing
Netserv Software Testing
 
Infrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormationInfrastructure Continuous Delivery Using AWS CloudFormation
Infrastructure Continuous Delivery Using AWS CloudFormation
 
20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01
 
Functional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and HudsonFunctional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and Hudson
 

MidSem

  • 1. Intern – Balance Tracker Asmita Sharma – MCA 2012-15
  • 2. Profile  Name – Asmita Sharma  Roll No. – 06  Year – 2012- 2015  University – Delhi University  University Mentor – Ms. Neelima Gupta  Organization – Amazon Inc.  Manager – Mr. Ramesh Krishna Kumar  Mentor – Itiyama Sadana  Team – BTS  Platform – Ecommerce Payments  Role – Software Development Engineer Intern  Internship Start Date – 16 Feb 2015  Internship End Date – 15 Aug 2015
  • 5. Glossary  Pipeline : A tool for modeling your release process and adding automation to it.  Version Set : A snapshot of application dependencies.  SQS : Simple Queuing Service  DynamoDB : NoSQL Database  S3 : Simple Storage Service  Workflow : Sequence of executable steps.  SWF : Simple Workflow  Environment Stages : Association between hosts and Apollo environments.  Alpha : Environment stage receiving no traffic.  Beta : Environment stage receiving minimal traffic for testing.  Prod : Environment stage receiving real-time traffic.
  • 6. BTS - Overview  BTS (Balance Tracking System) is a Global Stored Value Platform of Amazon.  BTS is a part of ecommerce payments platform of Amazon.  It allows any business in Amazon to create instruments and track funds movement for them.  It also provides simple APIs for querying balance of an instrument and history of fund movement transactions done on an instrument.
  • 7. Operational Task - Overview  Objective : To migrate packages from JAVA - 1.7 to JAVA - 1.8  Packages :  PerseusClient  PerseusClientInterface  PerseusTestClient  PerseusTestSuite  MonadArchivalBusinessClient  MonadArchivalLocator  Pipelines :  PerseusClient-development  MonadArchivalPerseusClient/development  SubTasks :  Code Change  Merge Dependencies  Testing  Deployment  Migrate Pipelines
  • 8. Operational Task – Code Change  Changes to Config file involved adding, removing and updating versions of build and runtime dependencies to latest versions supporting JAVA 8.  Config file changes also involved resolving conflicting dependencies of the package with it’s upstream and downstream packages.  Changes to build.xml involved adding properties for classpath of new packages and few more changes to make upstream JAVA 7 packages compatible with JAVA 8 migrated package.  Changes to Spring configuration xml files involved modification of syntax for dependencies migrated to latest versions supporting JAVA 8.  Changes to Spring configuration xml files also involved using classpath approach for integrating spring packages instead of providing url of spring packages.
  • 9. Operational Task – Merge dependencies  Live is a version set which contains all the versions of all the packages required within amazon.  Every package corresponds to a version set which contains all the dependencies of the packages in that version set.  To upgrade or add a new version of any dependency, we need to merge that dependency into the version set from live.
  • 10. Operational Task – Testing  A package is first tested in the workplace itself using brazil CLI commands and targets specified in build.xml.  After these tests are passed, any package dependent on this package is merged to workspace and tested to run with these changes.  When above tests pass successfully, peer review is done and suggested improvements are incorporated.  After peer review is complete , the package is pushed to a temporary branch of the repository.
  • 11. Operational Task – Deployment  The package from the temporary branch is build into the version set and deployed to the pipeline.  It is tested at various stages (namely Alpha and Beta) of pipeline through regression suites.  After it passes these stages and logs of the hosts at these stages are verified, it is deployed to Prod.
  • 12. Operational Task – Migrate Pipelines  Migrating pipeline involves merging all packages migrated to Java 8 that belong to that pipeline or are a dependency of the packages belonging to the pipeline.  Any conflicts arising while merging these packages have to be resolved and then merged again.  Logs of hosts at each stage (Alpha , Beta, Prod) have to be verified after this step also.
  • 13. Minor Project  Objective : To remove reconciliation from PerseusClient/development-clone and MonadBalanceServiceListener pipeline.  Packages :  PerseusClient  PerseusClientInterface  PerseusTestClient  PerseusTestSuite  NotificationParser  ModelConverter  BalanceUpdateBusinessClient  BalanceQueryServiceSAO  SubTasks :  Code Change  Modifying Regressions  Modifying Unit Test Cases  Resetting AWS Credentials  Testing  Major Version Upgrade  Write Change Management (CM) Document  Deployment
  • 14. Minor Project – Code Change  Removing Tracker Table and Marker Table instances along with their interface and unit test cases.  Removing all SWF (Simple Workflow) workflows and corresponding unit tests.  Removing dependencies from Config file which are no longer needed.  Removing brazil-config file properties that are no longer required.  Removing unnecessary targets and properties from build.xml.  Removing reconciler instances from all packages.  Deleting spring configuration files corresponding to reconciler .  Removing all packages used by reconcilera which are no longer required.
  • 15. Minor Project – Modifying Regressions  Removing DynamoDB instances previously used by tracker table and marker table.  Modifying regressions to test only notification functionality and neglect reconciliation.  Events in modified regression suite will not be dropped to test reconciler functionality.  All regressions related to reconciler and workflows will be deleted.  In modified regression suite, only notification listener will be tested by updating a dummy instrument and verifying that it’s notification reaches event listener through SQS (Simple Queuing Service).  Reconciler instances and unnecessary dependencies will be removed from Config and xml files.
  • 16. Minor Project – Modifying Unit Test Cases  Added unit test for Event Details class  Added spring beans to set S3 (Simple Storage Service) and AWS (Amazon Web Services) credentials and configured the same in spring configuration xml files and brazil-config.  Removed unit test cases for workflows and dynamoDB tables.  Removed unit test cases involving missing sequence number tests and updated event listener test for the same.  Modularized a function by shifting s3 upload functionality from the function to a separate method.
  • 17. Minor Project – Resetting AWS Credentials  Earlier the AWS credentials were set using Odin which did not allow the credentials to be seamlessly retrieved dynamically.  Hence, used AWSCredentialProvider to set AWS credentials for SQS in PerseusClient and PerseusTestClient using spring beans and brazil-config.  This approach eliminates the race condition where dynamic credentials could change in between calls to getAccessKey/getSecretAccessKey/getSessionToken and leave the customer with invalid credentials.  This also makes it very easy for the AWSCredentialsProvider implementation to return different types of credentials objects.
  • 18. Minor Project – Testing  Created a child environment of the Alpha stage of the PerseusClient-development pipeline and deployed it on local machine using Apollo.  Attached my workspace and modified packages to this child environment using brazil.  Activated the child environment using brazil.  Logged in to the remote host set up at Alpha stage of pipeline using SSH command.  Verified the logs running on the host.  Deactivated the parent environment.  Logged in to the SWF console and verified that the workflows have stopped executing.
  • 19. Minor Project – Major Version Upgrade  Upgraded the major version of all packages to 2.0.  Changes were made to Config file and build.xml file of all packages.
  • 20. Major Project  Objective : To support Query APIs on S3.  API:  GetEvent()  GetInstrumentEvents()  GetChildEvents()  GetInitializeStatus()  SubTasks :  Data Analysis  Design Approach  Write Design Document  Environment Setup  Code Development  Writing Unit Tests  Deriving and Coding Regressions  Testing  Deployment
  • 21. Major Project – Data Analysis  Objective : To analyze up to 3 months old logs to gather requirements.  API :  GetInstrumentEvents()  SubTasks :  Figure out data required from logs  Write Script to gather data from logs  Run script of hosts containing logs  Post-process data for concluding requirements  Represent data graphically  Output :  Domains accessing more than year old events  Total number of events returned by each API call  Number of more than year old , more than six month old and more than three month old events returned by each API call  Number of calls returning more than year old events made by each domain  Difference between API call time and creation time of oldest event returned by each API call
  • 22. Major Project – Design Approach  Objective : To come up with an approach that best fits the requirements of all the four APIs with optimal use of resources as per the required performance.  SubTasks :  Understand the functionality , input fields and output fields of the APIs  Figure out the required latencies  Analyze available tools for suitability as per the requirements  Devise design approaches  Calculate storage, latencies and cost metrics for each approach  Analyze feasibility, simplicity of development, scalability and maintenance of each approach  Choose between Sync and Async path  Compare candidate approaches  Choose the best fit
  • 23. Major Project – Design Document Index 1.1 Prior Knowledge 1.1.1 APIs 1.1.2 EventID Format 1.1.3 InstrumentID Format 1.1.4 S3 File Format 1.2 Data Analysis 1.2.1 Script 1.2.2 Requirements 1.3 Design Approach 1.3.1 Storing S3 files on hourly basis and scanning files for required instrument 1.3.2 Creating index on instrument ID per day 1.3.2.1 Index Structure 1.3.2.1.1 Start_File and End_File field size calculation 1.3.2.2 Metrics 1.3.2.3 Cost of storing indexes in S3 1.3.2.4 Cost of storing indexes in DynamoDB 1.3.2.5 Comparison 1.3.3 Creating instrument level indexes 1.3.4 Using CloudSearch to index S3 files 1.3.4.1 Costing
  • 24. Yet To Do…  Minor Project  Deployment  Writing Change Management Document  Major Project  Environment Setup  Code Development  Writing Unit Tests  Deriving and Coding Regressions  Testing  Deployment