Home » DevOps
Category Archives: DevOps
BPM is no more a Healthy Salad Diet of plain & bland Process & Rules. It has matured and become an amalgamation of all the disruptive technologies and digital trends. In a nutshell, it has become more of a BRUNCH Meal.
The asks of the customers and market trends are cherry picked an packaged in a BPM Product – making it a self sufficient enterprise solution [at times] but on a lighter note Bulkier too [day-by-day the size of the BPM Product Installable is getting increased] 🙂
BPM Products (these days), keep adding some new feature into their kitty to make life easy for the Business as well as IT stakeholders. With new disruptive technologies getting mushroomed everyday, BPM packaged tools provide some flavor or slice of the new technology/trend. Its no longer an a-la-carte menu kind of offering for enterprise, instead a Packaged Combo Meal serving a set of business audience or business challenges/pain-points.
The features that were the key drivers and engine of BPM a decade earlier [during its inception] are getting enhanced [no doubt about it] but at the same time getting shadowed by the competitive chaos and disruptive tech. trends.
For every customer the four-walls within which they can experiment and play around with technologies / trends are the following : [these become the key focus areas for BPM Product Vendors]
- Un-parallel Customer Experience inline with the Enterprise Ux[User Experience]
- Enterprise Architecture – Guidelines/Standards/Compliance
- Cost-Pace-Quality [CPQ] Factor
- Business Strategy & Workforce Productivity
When we are at the verge of bidding farewell to the current year and welcoming the New Year. The curious question that keeps popping / itching at this time of the year
- “What are the BPM Predictions for the Next Year?” or
- “What’s cooking for BPM, in the next year?” or
- “What the Master-Chef BPM Product vendors have to Offer?”
- “Is the coming Year going to be BPMlicious”
…Stay Tuned for the Next Post on BPM Predictions for 2017!
Please do share your comments, thoughts and suggestions !!
Happy Reading 🙂
Last Year’s Post : What are your Predictions for BPM 2016?
Image Source: Link1 [The intent of using the images was to pictorially share the thoughts and share the learning. Happy to share Credits for the photos and images] Some of the pics have been taken directly from my Breakfast Table 🙂
The Banking & the Financial services industry is the widely and wildly conquered sector where digitization and automation has been enabled to the max by IT. But in recent times, with the advancement of technology and innovations, it is important for the Banking industry to explore, pace up, transform, innovate, re-think and live in the present. The technology adoption and re-incarnation of business strategy/priorities to serve the customers will definitely play a crucial role in the Bank’s journey in making it stand tall n strong in the crowd (as a differentiator).
A nice read article on “Top Retail Banking Trends & Predictions“.
Key Highlights :
- The ‘Platformification’ of Banking
- Removing Friction from the Customer Journey
- Making Big Data Actionable
- Introduction of ‘Optichannel’ Delivery
- Expansion of Digital Payments
- Executing on Innovation
- Exploring Advanced Technologies
- Emergence of a New Breeds of Banks
- Mining New Talent
- Responding to Regulatory and Rate Changes
few additions …
- Next-Gen Customer Experience by including
- wearable device adoption
- analysis driven Next Best Actions
- ..and many more
- Developing Customer Centric Applications (primarily self service enabled)
- Welcome & Leverage Open Source Stacks (OSS)
- Crowd-Sourcing Initiatives (loan, mortgage, risk management etc)
- Blockchain technology making the financial system more decentralized
- Emergence of Banking Market Apps
- Robot Advisers that stop you from making unsound financial choices, in real time – Customer Assist
- Establishment of Banking Innovation Labs
- Beacon Technology Adoption
- Heat-Map Technology – Identifying right customer for the right product at the right time
- Automated Appointment/Scheduling/Token Management – helps avoiding unexpected crowd and long queues
- Battling with mushrooming Mobile Wallets
- DevOps driven CI/CD in IT – for streamlining Release Management
- Streamlining Operations in IT with Robotic Automation / Machine Learning techniques
Interesting Read Articles:
- 10 Branch Banking Innovation Strategies for 2016
- The Uberization of Banking
- What Makes a Great Mobile Banking App
- Digital Disruption Forces Financial Institutions to Rethink Priorities
- Selfies Transforming Mobile Banking
- With Digital Banking, Consumers Must Come First
- Internet of Things: Opportunity for Financial Services?
- Banks Need to Make Mobile Apps An Experience, Not An Add-On
- Article : The derivative effect: How financial services can make IoT technology pay off (link : pdf)
- 7 Habits Of A Highly Successful Digital Bank
- Differentiation in Banking Requires Better Data Insights
- New Customer Onboarding Goes Beyond Slick Marketing (link: pdf)
- Mobile Banking Satisfaction Drops As Digital Expectations Rise
- Banks Expand Innovation Investments to Battle Fintech
- How Banking Can Survive Digital Disruption
- Three Barriers to Banking Innovation
- Digital Thinking for Bank 1.0
- Becoming a Smarter Bank
What are your top trends & predictions in the retail banking space?
Happy Learning!! 🙂
Here is an interesting link for DevOps Events calendar worldwide round the year – compiled by lanyrd.com
Conferences and events in India
Please do share any useful calendar or event list for forthcoming devops events.
Happy Reading!! 🙂
For any enterprise implementation of DevOps or Continuous Delivery, it is very important to have a reference architecture and pipeline defined along with the different product stacks that can be leveraged through-out the life cycle of the implementation.
Here is a high-level snapshot of the reference architecture.
Please click the link above for detailed notes on the different components.
Happy Learning!! 🙂
We all have worked on multiple projects and have delivered multiple applications to Production, but one of the Common Issues that surfaces everytime irrespective of the technology used in the application is “The site is very slow”. This actually boils down to the latency and response time for loading the UI.
Even though some of the complex integrations, with external/legacy systems, workflows, business rules, database queries, customization of the screens and many more…have been incorporated in a project, the one single thing that can stump the customer or the end user is the page-load time.
Lets, forget about the project, even in our day-to-day life, we get irritated and pissed-off when the Banking Transaction or the Gateway Payment is slow – we just burst out. For any page we browse, if it takes, more than 4-5 seconds, we just move-on to some other link.
The best example to site here is : What is the link you enter in your browser to check if the network connectivity or wireless is ON. Have seen most of the people including myself hitting the url with – http://www.google.com. But Why??… The simple and straight forward answer is, it loads very very faster than other pages(agreed it can be debatable considering that the Google homepage just has a few lines texts)
So, the bottom line is, to please the end user and give him/her a better experience, its is very important to concentrate on the page-load time and the steps to improvize upon it.
My earlier blog post showcases an infographic (by GTMetrix.com) about “How much time is wasted in Loading Web Pages“. This is something that cannot be ruled out or kept aside.
This brings us to an interesting question How??
Living in an era of high end technology and Open-Source Softwares, things may not have to be built from scratch. Here are a few tools and examples of the engineering tools that can be leveraged for identifying/debugging the loopholes and providing a lightening speed user experience.
1) YSlow :
- YSlow is a tool that helps you to speed up your website.
- It is an add-on for Firefox—or rather, an add-on to an add-on (Firebug).
- This is developed by the Yahoo Exceptional Performance Team
- It is built on 34 basic rules that affect a web page performance and slowness
- The details of these rules can be browsed from the like – http://yslow.org/.
- It Grades the web page based on one of three predefined ruleset or a user-defined ruleset
- It provides suggestions for improving the page’s performance
- Summarizes the page’s components
- Displays statistics about the page
- FAQs on YSlow – http://yslow.org/faq/
Here are a few pointers, if breached may be the responsible for slowing down your webpage-loading :
- CSS references should always be placed on top of a web page
- The Java Scripts should be placed at the bottom of the page
- Compressing the components with GZip
- Expensive errors like HTTP 404 should be avoided as it degrades the end user exp.
- Using a centralized content delivery network (CDN) for storing static images and documents for referencing in the web pages
- ..many more (from the Yahoo’s list of Rules)
At some point of time one curious question might arise, “my application has a performance score of 100% but still it’s very slow. Why?” Well then obviously it’s time for you to sit back and start optimizing your business logic and entire solution implementation. Remember “Yahoo’s problems aren’t necessarily your problem”.
Interesing Regerences :
- YSlow User Guide
- YSlow faqs
- Its is a free speed analysis tool for websites!
- Logon to GTMetrix.com (signup for better tracking of results)
- Enter the URL of the page/site you want to monitor and click submit
- It gives a Report (PDF), with detailed information on the Page Speed and reason for slowness of the system
- It is integrated with YSlow at the backend, and provides a Grading from the Page Speed perspective and YSlow perspective
- With advanced options even the testing hub or location can be selected (if the application is globally accessed by customers)
- Filmstrip capture can also be generated to showcase after how many seconds the page gets loaded, or what all portions of the page get loaded every second
Interesting Read :
- Why is my page slow? (Detailed architecture and description for slowness of a web page)
- GTMetrix faqs – nice read
3) Google’s Page Speed Insights
- The PageSpeed family of tools is designed to help you optimize the performance of your website.
- PageSpeed Insights products will help you identify performance best practices that can be applied to your site, and PageSpeed optimization tools can help you automate the process.
- Download plugin Page Speed Insights(by Google) from Chrome Web Store
Other links for Testing the webpage speed :
Reference and Nice Read :
Please do sugegst and share if you come across any interesting link or tool for boosing a website!! 🙂
PS: The examples of the sites referred in this blog are just examples, and has nothing to point out or compare which site performs better
Happy Speeding!! 🙂
“Tomcat” is always considered as a “poor-man’s server”, but the Tomcat 7 has something really interesting to offer i.e.Parallel Deployment.This was contributed by SpringSource (now VMware).Parallel Deployment is an approach that allows several online deployment operations to run simultaneously or in simple words it is the ability to deploy more than one version of your web application in parallel, making all versions available under the exact same URL. The parallel deployment also helps in the patch releases and advocating the best version of the application based on the performance and traffic
The most exciting thing with this feature is “Zero Down-Time Release (deployment and rollback) Process”. Whenever we go for a deployment process, we shutdown the server, remove all active connections, drain out the older version and move or fire the updated version of the application. Considering from a real-time project scenario, the developer does not have to get approval from his manager and the manager does not have to get necessary approvals from the customer – as there is no downtime impact involved. So, the developer himself can push the latest code and test/monitor the application with the live users.
If, we can co-relate this with the approach, Facebook, Flickr, Google and many other companies have been following where the developer directly pushes the code to production and shepards it until any unforeseen issue is reported by the user. As a quick statistics, Facebook developers push the code to production “daily twice” with millions lines of code five days a week. Similarly Flickr pushes 10 deploys per day (full article – slideshare)
One of the finest videos explaining the Release Engineering at Facebook – Click Here
Here is a simple usecase for testing with multiple variants of the application :
- Push three different versions of a Hello World program V001, V002 and V003, one after the other and then monitoring the static application URL that keeps changing as and when the updated version is deployed/rolled-out
- UnDeploy a couple of versions (the case of application rollback) to see, how the application responds.
Pictorial representation of the scenario:
- Create a simple Index.html as represented below (the versions shows the changes that needs to be incorporated with multiple version releases)
- Create a Build.xml as shown below, the undeploy target is used during rollback. During the deploy step execution a new Version of WAR file is created “PDRelease##001” and is copied to the Tomcat/webapps folder. For multiple release versions the Count is increased. The general approach for creating a new versioned WAR file is to have the format ##< Version Number>.war:
- e=”Testing the Parallel Deployment Process” basedir=”.”>
- After a successful execution of the build.xml, the Portal is accessed :
[war] Building war: C:\Users\user\workspace\ParallelDeployment\PDRelease##001.war
[copy] Copying 5 files to E:\Test\ReleaseMgmt_Tomcat\webapps
Total time: 1 second
- Next, the changes in the index.html are incorporated and the new versions of WAR files are deployed to access the Portal. (for showcase – opened it in 3 different browsers). Otherwise it will always take the Highest Version of the Application. With each individual browser, the different versions of the applications can be accessed.
- Quick snapshot of the webapps folder :
- The Version V003 is un-deployed or rolled back , so that the Highest Version of the application available is PDRelease##002
- The Logs can be verified to understand the history, as to which Application version was deployed or un-deployed
- Nov 03, 2012 8:02:14 PM org.apache.catalina.startup.HostConfig deployWAR
- INFO: Deploying web application archive E:\Test\ReleaseMgmt_Tomcat\webapps\PDRelease##001.war
- Nov 03, 2012 8:02:14 PM org.apache.catalina.startup.HostConfig deployWAR
- INFO: Deploying web application archive E:\Test\ReleaseMgmt_Tomcat\webapps\PDRelease##002.war
- Nov 03, 2012 8:02:14 PM org.apache.catalina.startup.HostConfig deployWAR
- INFO: Deploying web application archive E:\Test\ReleaseMgmt_Tomcat\webapps\PDRelease##003.war
- Nov 03, 2012 8:02:15 PM org.apache.catalina.startup.HostConfig deployWAR
- Nov 03, 2012 8:10:00 PM org.apache.catalina.startup.HostConfig checkResources
- INFO: Undeploying context [/PDRelease##003]
Things to be taken care of :
- Internal Cache should be written separately as multiple versions of the application will be accessing and going on/off. A perfect example to visualize this situation would be to updating the database based on a caching mechanism.
- Logging (where does the logs get written for different versions of the application)
- Session handling is currently taken care of by Tomcat. So any changes to the Session handling configurations will affect the parallel deployment approach.
- Only one listener can listen on any given port.
- From an enterprise application perspective, there might be a situation wherein multiple versions of the app, will be accessing a common file store of database row. So how do we handle the locking mechanism for a smooth and hassle free access.
- Rolling back of changed schemas, data entry row updates in the database, webservice configuration changes
- As a best practice, the version numbers for the WAR files can be numbered in sync with the CVS or SVN version of the application in the repository. So, the war file name can be mentioned as ##.war
- Strategize and draft a schedule for the deployment approach when and under what condition the code needs to be pushed or rollback
Parallel Deployment is not suited for cases like :
- Dealing with web-applications requiring in-memory caching would be challenging as the cache will have the stale information and will not serve the purpose.
- Web applications which require, offline deployment and restart or server–in that case parallel deployment approach is not a best fit.
Advantages of Parallel Deployment or Phased Release Engineering:
- Speed and Scale of deployment
- Easy deployment and rollback – facilitating continuity of business without any show-stopper with issues related to the new deployment. The last best version can always be rolled back.
- A/B or split testing
- Better end user testing – pushing the code to production or any higher environment is always a nail-biting situation. With parallel deployment and patch release approach the code can be silently pushed to production and get it tested with the end-user.
- Provides a better ground for experimentation and deploy without any fear.
- A cushion for the developers and the customers with incremental releases.
- A developer can act as a release engineer and vice-versa.
- The developer shepard’s his change to the world
Other Tools to explore:
There are many other tools which the companies like Facebook and Google use pushing the code on an incremental and decremental fashion – ‘need to explore to figure out how exactly it is done using the tools. Couple of other tools ‘came across are
- BOSH (developed by the CloudFoundry – VMWARE team and now opensourced)
- Capistrano (another OSS).
- Asgard (OSS) – also provides an application deployment and version rollback feature on Amazon EC2 instance
- Apache Tomcat 7
- Tomcat – Parallel Deployment
- What is Parallel Deployment ?
- Advantages of Parallel Deployment
- Wiki – Release Engineering
- Interesting Article : Four Principles of Low-Risk Software Releases
- Interesting Videos and Tech Talks : Facebook Engineering unleashed
- Pushing Millions lines of code 5 days a week – FB
PN : Please do keep posting your valuable comments and suggestions on the same and feel free to correct me if my understanding is wrong.
Happy Learning 🙂