WebApps and DevOps
When my team wrote first DIY web app, we had already made the decision to use Java/Spring stack for backend. So, we were heavily influenced by Spring MVC et al. What led to is a JSP based application that was used to supply dynamic content to web clients(browsers). Even though client itself was developed using HTML5/JS/CSS3, lot of things were tied to backend. It ranged from, how client communicated with backend and got dynamic data to how static assets were deployed. It also meant, the development cycle of backend and front end were interconnected(Yes, we did out best to provide versioning etc at API gateway layer, but was not way perfect).
So, in this blog, I would like to highlight few issues that comes with that model and how this is connected to DevOps and how it can be solved.
1. As we all know, technology teams developing front end and backend worry about different things. Their competencies are different. How many full-stack developers we know, who can move from modifying complex front end code to database?. There are few good ones, But most big organizations are structured that way. So, it is too much to ask someone who is developing Javascript layer code in a complex application to also take care of API or make sure both are deployed properly.
2. It is very error prone and in lot of cases it adds extra work on operations teams and quality engineering to make sure end-end application works, when a small change in UI has to be deployed.
3. If you have a CDN, then how do you manage and deploy assets there to make sure(some image you changed in webapp) gets reflected to all the people who access the page.
Luckily, you don't have to deal with this anymore.
With new architecture patters and frameworks, Clients and Backends(API gateways/Micro Services) are can perform their development cycle independently. In my case, I migrated all the Spring MVC app to AngularJS + SpringBoot App.
1. It allowed independent development of Backend Services and API, that could be deployed to production(allowed migration of old clients in methodical way, by continuing to be able to run services of different versions).
2. It allowed Web App developers on focusing on improving Usability, improving performance/security, mobile responsiveness etc.
3. It even allows you to pick different Web frameworks that can access backend services seamlessly.
4. It allowed modularizing Web app development, with its own tool chain(dependency mgmt, debuggung etc).
5. It increased amount of "production" deployment, as WebApp developers could have their own "pipeline" independent of rest of the system.
If you have more question on this, please contact us