Software Development Blog

Server Infrastructure: CI/CD approach

Today we’re gonna discover a complicated but extremely important subjects in web development – Continuous Integration and Continuous Delivery of software solution.

In previous articles on this blog we have always talked about how to make sure that you’re gonna develop a highly-qualified web product. But only after you finished all of the sprints & demos you start to realize that the F.U.N. part starts now, when real users are scrolling through your platform and real investors are evaluating risks and prospects of your startup. In order to make sure that you are using that best technologies possible for the everlasting life of your software solution you have to understand complicated Server Infrastructure by itself. Let’s dive into this difficult but very interesting topic.

LaSoft is supported the following web hosting services:

1. Heroku: container-based Cloud Platform. Developers use Heroku to deploy, manage, and scale modern apps. Elegant, flexible, and easy to use the platform, offering developers the simplest path to getting their apps to market. Fully managed the platform’s giving developers the freedom to focus on their core product.

2. AWS: the world’s most comprehensive and broadly adopted cloud platform, offering over 175 fully-featured services from data centers globally. Millions of customers—including the fastest-growing startups and largest enterprises — are using AWS to lower costs, become more agile, and innovate faster.

3. DigitalOcean: the platform helps to build and release faster with scalable compute products in the cloud. DigitalOcean provides flexible server configurations sized for any application, industry leading price to performance, and predictable pricing that is the same across regions and usage volumes.

4. Linode: the platform makes it simple to launch and scale in the cloud. Flat pricing across every global data center, an intuitive cloud manager, full-featured API, best-in-class documentation, and award-winning support. Linode makes it easy to manage your applications in the cloud.

Development environments

1. QA branch = QA server;

This environment contains all the latest iterations of the code you’re working on. It’s perfect for initial testing on new features. During the QA process, changes to your website will be tested thoroughly to find any issues that you may have missed while coding. This type of environment is most often used by large companies since they can’t afford to have bugs pop up on live sites.

2. Staging branch = Staging server;

A staging website acts as the bridge between the development and live versions of your site. At this point, any remaining errors should be addressed, and the changes should be ready to roll out.

3. Master branch = Production server.

If you’ve been careful throughout the development process, this iteration of your site should be bug-free and provide a flawless user experience.

Development environments

Git-Flow

  1. New branch -> QA branch -> Staging branch -> Master branch
  2. New branch -> QA branch; New branch -> Staging branch; New branch -> Master branch

Delivery

1. Feature delivery

Feature-driven development is an iterative and incremental software development process. FDD blends a number of industry-recognized best practices into a cohesive whole. These practices are driven from a client-valued functionality perspective. Its main purpose is to deliver tangible, working software repeatedly in a timely manner in accordance with the Principles behind the Agile Manifesto.

2. Solution (sprint) delivery

Implementing new solutions can be intimidating and challenging. We will carry the burden of managing implementation, help you define your business requirements, and liaise with your vendors.

Continuous Integration & Continuous Delivery

CI/CD approach requires a lot of enthusiasm and devotion with your project, but we, at LaSoft has extensive experience in these two spheres and more then ready to move on with your software solution.

The biggest advantages of using CI/CD approach (a.k.a. reasons to love it) are as follows:

Early Bug Detection & Reduces Bug Count.

Automating the Process.

Cost-Effective Process.

Continuous Integration 

Developers practicing continuous integration merge their changes back to the main branch as often as possible. The developer’s changes are validated by creating a build and running automated tests against the build. By doing so, you avoid the integration hell that usually happens when people wait for release day to merge their changes into the release branch.

Continuous integration puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch.

Continuous Delivery

Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.

With continuous delivery, you can decide to release daily, weekly, fortnightly, or whatever suits your business requirements. However, if you truly want to get the benefits of continuous delivery, you should deploy to production as early as possible to make sure that you release small batches that are easy to troubleshoot in case of a problem.

Here are two schemes of CI/CD approach on back-end and front-end sides of your software solution. Book a meeting with LaSoft Agency to learn a slightly more then average startup co-founder, businessman about those web dev. approaches!

CI / CD steps for front-end

CI / CD steps for back-end

Continuous Deployment & Continuous Delivery

Continuous Deployment means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it.

GDPR

As European Commission summarized, “the objective of this new set of rules is to give citizens back control over of their personal data, and to simplify the regulatory environment for business.” It’s believed that new regulations will help to boost digital economy on the mutually beneficial terms for businesses and their customers.

1. Divided responsibility

  Production environment = Client’s account

  QA, Staging environments = LaSoft’s account.

2. Undivided responsibility

QA, Staging, Production = LaSoft’s account, or Client’s account.

CI/CD approach

Trends of CI/CD | “Back in the Future”

Release on demand

Release on demand allows new functionality to be deployed into production and released immediately or incrementally to customers based on their personal “demand”. Release on demand is the final dimension in the four-part Continuous Delivery Pipeline, preceded by Continuous Exploration (CE), Continuous Integration (CI), and Continuous Deployment (CD).

Those three dimensions help to ensure that new functionality will be created in the blink of an eye and verified in the production environment. But since tangible development value only occurs when end users are operating the Solution in their environment. Releasing that value at the right time is critical for the enterprise to gain the real benefits of agility. The decision as to when and what to release is a key economic driver that requires careful consideration. For many, Continuous Delivery is the desired goal. New functionality is released as soon as it is developed. While at other sites release is a decoupled, on-demand activity, occurring for specific users, timed according to their needs or when it makes the most economic sense for the Enterprise. 

Trends of CI/CD

  1. Dark launches – This provides the ability to deploy to a production environment without releasing the functionality to end users. 
  2. Feature toggles – This is a technique to facilitate dark launches by implementing toggles in the code, which enables switching between old and new functionality. 
  3. Canary releases – These provide a mechanism for releasing the solution to a specific Customer segment and measuring the results, before expanding and releasing to more customers. 
  4. Decoupled release elements – This technique identifies specific release elements, each of which can be released independently.

We highly appreciate your time, spent on our new article. Please, check other articles on our Blog, we sure that you find something new & fascinating for yourself. As well as don’t forget to comment & share our article on your social platforms. LaSoft is signing off, see you in the next time.

 

Welcome to check our projects

We have described the most compelling solutions and approaches to meet challenges and advantages.

Share This