Devops – smaller builds

As stated in a previous article, one of the goals we are focusing on right now is deploying to pre-production every 45 minutes. Data recovery windows 7 At first blush, that seems a bit fast. Nexus 4 data recovery When I broached it with my team they (rightfully) pointed our current CI build takes 15 minutes to build, deploy to development, run automated tests, and then deploy to testing.


Database version 706 Excellent point.

It got me thinking, what exactly are we building on every check-in? If a component didn’t change why go through the exercise of rebuilding it and redeploying it? Could the current build be broken apart into smaller builds and only build when that component changes? Could that provide enough of a speed boost to get to production faster?

After some research we decided to do just that, break up the main CI build into smaller builds. Cindia data recovery Each focused on building a specific component of the application. Database tutorial We didn’t just do it willy-nilly, we tried some configurations, saw how it went for a few days and adjusted. R database packages This article will hopefully show you the thought process for each decision so hopefully, you can apply a similar idea yourself.

First up I wanted to examine what the build is currently doing. Database disk image is malformed But to do that it is important to know the architecture of the system my team and I are working on. Windows 8 data recovery software The architecture follows a standard N-Tier Architecture Model, with the User Interfaces communicating with the business logic via RESTful services.

• Web UI – what all users interact with, written using Angular 1.x as a single page application or SPA. Database naming standards Initial rendering handled via ASP.NET MVC, but that is really just a host for an “ass-load” of JavaScript Files

• API – a RESTful service hosted using ASP.NET WebApi. Data recovery training online The user interface interacts make multiple requests, almost all business logic is housed here, all database access and other service interaction occur on the API.

• External API – another RESTful service with endpoints for other systems to interact with the loan origination system. Database query Not much churn on this service.

• Windows Service Quartz .NET Scheduler (BatchRunner) – performs several automated tasks on a schedule. Database isolation levels This service simply hits the API, the only business logic is the scheduling and error handling. Database version control For all intents and purposes, it is a dumb service. Database record definition It is completely isolated.

• Notification Service (Subscriber) – sits on top of an MSMQ. Database glossary Our customer system needs to notify all the systems when a change to a customer occurs. Data recovery druid MSMQ was chosen because of its reliability and reasonable guarantee all customer changes will be processed in the order in which they are made. Data recovery houston tx Simply invokes a stored procedure to update loans customers are tied to. Database 2010 It too is completely isolated.

• Core Layer – a C# project shared across all the applications. Dayz database map Contains all DTOs, logic to communicate with RESTful services, and interfaces to our configuration store and logging

When we were collaborating with the web admins on how we should setup Octopus Deploy we determined it would be best if each component got its own Octopus Deploy project. Database website template The reasoning behind that was in the event of an emergency we could then deploy the broken application and leave the rest alone. 7 data recovery registration code What that means is our application has six Octopus Deploy projects, one for each component.

When the code was checked into master the VSTS build would take over, build the solution, package and create releases for each six Octopus Deploy projects. 7 databases in 7 weeks pdf Each build would run all the unit tests, both C# and JavaScript, as well as the full suite of service integration tests using Fitnesse. Database key definition It is no surprise it took 15 minutes to build all that, deploy, and test it. Database hierarchy Change Frequency

As stated before, we are using VSTS as the build tool. Data recovery on mac One of the newer features added in the past six months or so is the ability to set the trigger on a CI build to only fire when a file in a certain folder is changed.

Knowing that certain components rarely changed, it made more sense to break those out into their own solutions. Data recovery kali linux To keep things separated (and hopefully less confusing), those pieces would be moved into a new folder called “Components” and each component would have its own solution file.

Building Fitnesse tests take time. I card data recovery I’m not going to go into the ins and outs of Fitnesse, but know that it took the time to do it but there wasn’t a lot of churn. Database name Looking at the logs I knew it would take around 120 seconds to build and deploy fitnesse.

Our CI build runs Fitnesse tests as a service integration test in the development environment. Database quiz If everything passes then it automatically promotes the project up to the test environment where QA and Business people can test the changes. Database url One year ago, in December of 2015, we had no Fitnesse tests. Os x data recovery free At the time of this writing that has grown to over 300 unique tests and 15,000+ assertions. Fda 510 k database The runtime for all these tests has increased to 5 minutes, or about 1 test a second. Database research Each test is responsible for setting up and tearing down the data needed for the test. Graph database This ensures we get consistent results.

The point of these tests is to ensure we didn’t check-in something that will stop testers from testing. Data recovery android free We really didn’t need to run the full suite to determine that. Database software We selected 40 or so tests we consider good smoke tests to run as part of the CI build. Database software definition We then set up a scheduled build that will run all tests every two hours.

These changes have gotten the build time down from 15 minutes to 7 minutes. Database error 7719 at exe That might not seem like a whole lot, but consider this, the most builds we could do in an hour was 4. Data recovery nj That has now been doubled to 8. Iphone 6 data recovery mac We have also managed to ensure quality is maintained. Database design tool We can respond to issues quicker.

We have also reduced the amount of items needing to be deployed to production. H data recovery software If something didn’t change, don’t deploy it. 1 care data recovery software Before these changes were made we would have to look through the changelog. Database user interface And we were afraid of missing something so we just decided to deploy the whole stack. Data recovery jaipur Now we can see in Octopus Deploy’s dashboard certain components haven’t changed since the last deployment, no need to deploy them again. Database platforms Pitfalls

I got a little to separation happy and broke the UI and Database out from the main CI build. Data recovery group That made things very confusing for other people on my team. Database xls They were used to the full stack being built and deployed. C database library I think of it like normalizing the database. 510 k database I went all the way to 4th normal form when I should’ve stopped at 1st or 2nd.

Also, all the components in our application share a core library consisting of DTOs and logic for configuration, logging and connecting to other RESTful services. How to become a database administrator At the time of this writing, each component’s solution references that core library which is currently stored in the “Source” folder. Database xml I’m still working through options to decouple the components from one another. Database terminology But it is something to keep in mind if you go this route. Database theory Conclusion

Overall, people on my team are happy this change was made. Database 1 to 1 relationship They can get bug fixes and new features up to the business to look so we can get faster feedback. Database testing I only wish I knew about VSTS’s include folder in their trigger a lot sooner so this could have been implemented when we were in a time crunch.

If you do decide to do this I recommend discussing it with your team so they are aware of changes to the build process. Database graph It is very confusing and frustrating to have something you thought would build not build, or have the appearance of not building. Database naming conventions The easiest way to get a win is to find a component that rarely changes and move it out of the main solution. Database entity That gave me the freedom to experiment and learn what needs to change in our architecture in a low-risk part of the code. Database developer If anything went south it was easy for me to roll back my changes.

This was just my first step making our builds smaller. Data recovery plan My next goal is to start slicing up the application into smaller pieces. Data recovery kansas city Doing that will take collaboration between the business, operations (so they know what is about to happen), and QA to ensure I don’t mess something up. N k database As I am able to do that, I will provide further updates on this topic.

banner