When we talk about the new DevOps concept, we mean a mixed cultural and philosophical change of mindset that includes new development practices and tools that increase the organization’s ability to provide their applications and services in a faster way: develop and improve products faster than organizations that use traditional software development and infrastructure management processes. This speed allows organizations to better serve their customers and compete more effectively in the market.
Following DevOps development model, the development and operations teams are no longer “isolated”. Sometimes, the two teams merge into one, where engineers work throughout the application’s life cycle, from development and testing to implementation and operations, and develop a variety of skills not limited to a single function. The quality control and security teams are also more integrated with the development and operations and intervene during the entire life cycle of the application. At the end with this new approach, developers become as a full ownership of their own development from first commit until the infrastructure building.
DevOps methodology allows the teams to full automate processes that have previously been manual and slow by using a stack of technology and tools that helps to improve fast and make reliable applications. These tools also help engineers to become full autonomous during all the deployment pipeline even when they need to create new pieces or services increasing even more the speed of the development.
Another important improvement is related to the feedback stage at the end of the development of the lifecycle that brings the pipeline visibility and show all the quality delivered during the process, issues detected and more in order to improve in an loop way the process.
AKA Time to market. Speed up your development and improve for your customers, adapt your business better and be prepared for the changes in the market with a greater efficiency with the buisness results. DevOps methodology provide all the tools and processes to increase the development team speed that helps achieving their goals. With microservices and continuous delivery, teams become ownerships of their services and make possible fast updates in an iteration daily imporvement.
Improves the delivery time rate by an ease development tool set that allows your team to bring new pieces of code by using automating pipelines. Improve your product in an iterative way during your working hours without service affectation thanks to the deployment methodology that allows to make test using different release in different environment at same time. Create new features, merge it to releases or even create simple hotfix just with a simple command or button. That kind of methodologies helps the team integration process and also the trust of the company to the technical area.
Ensure the quality of your application and the high availability of your business in your continuous delivery lifecycle to provide a positive experience to end users. Use practices such as continuous integration and continuous delivery to verify that each change is functional and safe by testing stages inside your pipeline. KPI dashboards and platform monitoring helps you to stay aware about performance and trending in real time.
Manage your infrastructure using autoscaling best practice following DevOps approach. DevOps methodology helps to create isolated services with the capability to grow every time that policy trigger comes up because of CPU usage, number of request or just for a schedule window. You can also move you artifact services along the different environments with the proper size and performance needs.
Create a more efficient development team with a Devops culture that helps with the internal technical knowledge and improve the operation skills. Development and Sysadmin teams that works closely, share responsibilities and share workflow and of course improve their trust each others. That way, your developers will write infrastructure as a code from the beginning of the process to the last PROD environment deploy. Let Operations team become a more service reliability engineers more focused of infrastructure performance.
If you use DevOps approach within a cloud model you can develop your infrastructure as a code platform to follow the best practices in terms of security to avoid future issues. Using roles and policies you will be able to reuse some shared resources to ensure that every component are linked to use security rules that just will bring access to proper users and services. DevOps is ready to be used to implement different security and quality standards as ISO or PCI.
Software and the Internet have transformed the world and its industries, from shopping to entertainment and banking. Software is no longer limited to supporting a business, but becomes an integral component of every aspect of it. Companies interact with their customers through software provided as applications or online services on all types of devices. They also use software to increase operational efficiency by transforming each section of the value chain, such as logistics, communication and operations. Just as physical product companies transformed the way they designed, manufactured, and delivered products, thanks to the industrial automation that occurred in the 20th century, today’s companies must transform the way they create and deliver software.
The continuous integration is a development workflow process where we merge the code changes in a shared core repository. After push the code to that repository, a trigger start in a autonomous way the configured quality tests. The key goals in this CI are : find and solve bugs faster, improve the delivery quality and minimize the time needed to validate and publish new software updates.
The continuous delivery is a development workflow which is used for prepare automatic deployment code to the company environments. This process should be placed after CI pipeline and gets the CI artifact (tested and approved previously) that should be deployed. There are many strategies for deployment depending on the environment: For example for production environment, in order to avoid downtime we can use blue/green deployment or even canary if we want to test the behaviour of new release before switch all the traffic to the new code.
The microservices architecture is a development design that consist of spread big services into little API that interact each others within a light interface. This methodology simplify a lot the software design because all the API has a clear role inside the flow and run an independent service with their own resources attached (database, queue services…). Each service provides one purpose and for that reason you don’t need to use same programming language for all the application, you can use the better technology in any case. On the other hand, work using microservices allows to create single container artifacts that improves the development process and helps to deliver same tested artifact over all the environment just changing the environment config patterns.
Infrastructure as a code is the programming methodology used for provisioning and manage infrastructure with development code tools exactly the same as standard software. With the new API provided by the public cloud services as AWS , Google Cloud or Azure we can use multi platform systems like Terraform, Ansible, etc in order to generate and manage pieces of infrastructure that will be used to deploy our code within CD process. This way we will have our infrastructure versioned as code and we will be able to make roll-back in case of incident for infrastructure changes and even have a clear relationship between infrastucture and software code. This practice also accelerate the time for provisioning infrastructure and also help developers to create their own infra pieces where deploy new software services.
One of the most important thing when we develop software (apps or infra) is follow the monitoring trending of the services and infrastructure in order to know how the development changes affects to the service. Using DevOps approach and infrastructure as a code you can include those monitoring tools inside the service setup code. This way you will be able to deliver a new piece of service with the monitoring included. Another important point to add is Alerting. Alerting is related with threshold of some KPI metrics, as ownership of your service you should know which KPI you must follow in order to predict some issue inside the service. With some tools we can provide by code all the alerting setup to ensure that when something goes wrong with your infra or software service, you will be aware in a minute thanks to some alerting tools that will inform you by phone call, push notification or whatever.
The knowledge transfer and also the collaboration inside a company it is one of the most important key points that we face when we implement DevOps approach. With the tools provided by DevOps, the whole development workflow is builded together with the infrastructure orchestration and can be modified with a shared contribution strategy by different kind of roles inside the organization. To achieve this goal there are some different communication channels like chat, wiki, conference calls, that contributes with an agile approach in order to share that knowledge between teams and make them all autonomous when they need to make some changes inside services. At the end all of this topics are very related with align the technical team.
In order to implement a DevOps model inside a company it is mandatory introduce some DevOps tools that will help us with all the points related with the CI/CD, communications, and orchestration process. There are a lot of different services and software that provides solutions but from Geko we are very confident with some like: Jenkins, GitHub, Drone.io, Spinnaker, Ansible, Docker… of course we must to adapt and find out tools for any particular case.