Upload
indikamaligaspe
View
111
Download
3
Embed Size (px)
Citation preview
RezGateway Inc.Innovate the FutureSept 26, 2016
Before Innovation , Imagination must be cultivated
Indika Maligaspe
Meeting Agenda
1. The Beginning2. Road So Far3. Present Focus4. Next Two Years
The Beginning
2012 – Architecture , Process, Technology
Though the architecture of our products was defined to be a three tier layered architecture in 2012 product (Rezpack) was a Big Ball of Mud
2012 – Architecture , Process, TechnologyArchitecture smells due to the Big Ball of Mud
• A single change has unpredictable impact• No layering between UI / App and Data (web server , application server and database all acting as application servers)• Unable to do large scale development ( Time Cost , Resource Cost , Opportunity Cost)• Incredibly difficult to fix issue • No possibility of scaling ( No failover , No load balancing , No disaster recovery )
2012 – Architecture , Process, TechnologyProcess smells due to the Big Ball of Mud
• Single Development items takes months to complete• Long QA cycle with manual testing (still no guarantee can be given)• Each regression cycle produced close to 2000 bug fixes before a production ready version was available, even that could not be guaranteed• Each environment (Dev / QA / Staging / Production) had unique challenges• Versioning issue with multiple version being maintained for each client
2012 – Architecture , Process, TechnologyTechnology smells due to the Big Ball of Mud
• Java – 5 (no support)• Struts 1.x (not supported and dead)• JBoss 4.0.x – (no support)• PostgreSQL 8.2 (no support)• Hibernate 3.x (no support)• EJB 2 spec (dead)• Infrastructure – Iron age bare metal servers• CVS code repo – no active support
Road So Far
By end of 2015
Refactored the application so that the big ball of mud could be cleaned. This allowed the development teams to anticipate and develop with at least some level of confidence.
Recent Progress – progress was made in several areas in the last two years• QA automation on around 80% of the key scenarios
– Still no focus on fixing reported automation issues– New features are not possible to automate– Automation not available service vise
• Use of Jenkins build tool to release, yet no Release / Delivery Pipeline• Use of cloud based infrastructure, yet advantage of cloud native was not fully used• Failover / Load balancing available but not optimally used• Agile development process implemented with scrum, yet not fully agile• Some Macro services separated out with
– UI business logics moved to app server– Template based UI introduced – Business logic in database reduced by at least 60%
• Moved from CVS code repository to GIT code repository for easier version management, yet the repository was not used properly to utilize it’s advances
But still we had several challenges
Present Focus
Introducing RezgOS
With a focused effort on bringing predictability , stability , maintainability and scalability on Architecture , Automation and Process introduced a new platform for RezGateway.
A platform for all RezPack applications to run on, will become the Operating System for all RezGateway products.
RezPack Architecture Vision - Service Oriented• RezPack - decoupled to be service oriented with all
operations to be microservices. • Utilize Spring Cloud Native support with Netflix set of tools• All applications that are integrating to RezPack integrated
via service end points Supplier Integration As a Service Content As a Service Data As a Service
• Each service to be whole services, with UI , API , Application logic and it’s own database
• All Macro Service converted to a set of microservices that can be reengineered with ease
RezPack Architecture - By end of 2016
RezPack Architecture – Macro Services
Supplier Integration Architecture - An EIA platform
• Supplier integration - with a centralized service which supports EIA and SOA• Each supplier integration - a service that feeds to RIDE Aggregator Service
(RAS)• Enabling REST service communication with JSON which improves
performance and scalability• Reduce integration issues which are prevailing in the system when
connecting to suppliers Broken connections Application failures Supplier errors
• Tracking , Monitoring and Alerting with ELK stack , Hystrix ,Dynamic Graphs
Presentation Architecture - will be a “Single Page Apps”
• User Interfaces is purely HTML5 / CSS3 and JavaScript based• All pages generated on client side with REST service
consumption• Seamless and Fast UI customizations without any impact to
Applications• Improved performance with WebSockets and Asynchronous
data streaming
Automation - Continues Integration / Continues Delivery (CI/CD) pipeline
• A single pipeline for all deployment• Each commit merge to repository master branch triggers a
deployment to CI environment which trigger automation suite for that service
• At any given time most service, most feature can be delivered to QA / Staging or Production environment with guaranteed results within minutes
• DEV / CI / QA release belongs to DEV and Staging / PROD belongs to business
Automation - CI / CD pipeline utilizing• Cohesive MicroServices
Each service will have it’s own wholeness to be deployed as a single deployment No patch releases
• Infrastructure As Code Infrastructure is ephemeral and is instanced as and when needed Complete grounds up deployment
• Database as Code No logic in database Database to reside in the repo of each service
• Quality Assurance as Code Every service to have automation to test Each development to complete when automation is available only Automation to run with each and every single deployment from DEV to PROD
Automation - CI / CD pipeline - By end of 2016
Automation - CI / CD pipeline - By end of 2016
Process – DevOps / Microservice centric
• Teams formed around services. Each team is cross functional , small and agile. They will have a definition of “Done” when the service is running without any issue in PROD
• Team is responsible for the QOS of the service and to make sure that the services are running for clients without any issue. If OPS find any issue in the service it will be All Hands On Deck for the team
• Each feature deployable from DEV environment to PROD environment complete with deployment scripts, automation and complete CI / CD cycle
• The team innovates, automates and grows with the service throughout the life cycle of the service.
• Productivity tools implemented so that we can guarantee that code quality is always met (sonarQube / PMD/ JVisualAnlyzer / etc..)
Technology Stack
• Java 8• Spring Suite of tools (Spring Boot, Spring Cloud, Spring Data, Spring REST)• Tomcat (8 / 9) / Jetty or Jboss Wildfly as needed• Netflix OSS suite of tools (Eureka, Zuul, Hysterix, SideCar , Ribbon, Archius etc..)• PostgreSQL 9.5 , CouchDB and REDIS• PHP5, REACT JS, REDUX for UI• Ansible, Gradle , Selenium and Jenkins for automation and deployment• Python for RezOs platform scripting• Pentaho for BI• As the services will be technology agnostic, we are open for any Open Source stack
The services and applications will be polyglot and technology agnostic. The stack will as of now will consists of
Next Two Years
Next Two years
• More micro level service separations with a focus towards Domain Driven Services which will include development to automation
• Inbuilt monitoring , tracing and Application Health checks with spring sleuth + zepkin, Turbine / Chaos Monkey and Chaos Gorilla
• Improve Security of application with Stormpath API• Advance content curate service integrations• Advance data mining and warehousing for data services with RedShift and
BigSQL• RnD into IoT based services
The next two years will be on improving RezOS platform , which will include the following key areas