DevOps: Deploy Better Software Faster
What is DevOps?
DevOps combines cultural philosophies, practices and tools to deliver products at a high velocity. Instead of inverting the traditional functional separation between developers, QA, and operations we enable cross-functional technology teams that promote collaboration rather than tension. By promoting team collaboration it results in valuing the repeatability of processes and eliminating single points of failure. It advocates thinking of infrastructure as part of the application and allows for more rapid and reliable software release cycles.
How does Mobomo do DevOps?
Mobomo extends the same agile, iterative development model we use for design and development into our DevOps architecture services. We embrace a fully automated, repeatable, testable deployment process that allows for rapid integration of code and 100% environmental consistency, mitigating the risk of surprises once your app is in production.
Benefits of DevOps:
- Faster time-to-market due to rapid release cycles. DevOps allows multiple releases per day.
- Infrastructure can be demand-responsive and right-priced using cloud tools like auto-scaling and reserved instances.
- Full transparency into cost-awareness allows for increased operational intelligence.
- Dramatically lowers failure rate in production because testing is consistent across environments.
- Allows application of Agile/Scrum development methodologies to infrastructure.
- Continuous Integration/Delivery (CI/CD)
- Code is deployed incrementally as often as possible using a fully-automated build/test/deploy process.
- Test-Driven Development (TDD)
- Developers write automated tests first before the code to satisfy them.
- All tests are then run on each release to identify functional regressions.
- Integrates developers more fully into the QA and release process.
- Microservices and Containerization
- Each modular component of an application is designed as a standalone service, avoiding the “monolith” approach.
- Allows functionality to degrade incrementally in the event of a bug rather than the entire application failing.
- Eliminates “spaghetti code” and makes applications more maintainable and future-proof.
- Graceful Failure
- Assume that failures will happen in production, so simulate them as part of application testing.
- High Availability: Eliminate all single points of failure in infrastructure with load balancing, clustering and other tools. (Horizontal vs. vertical scaling.)
- Automate disaster recovery so that infrastructure becomes self-healing.
- Cloud-agnostic: Multiple engineers certified in Amazon Web Services; also experienced with Azure, Rackspace, and OpenStack.
- Infrastructure: CloudFormation, Terraform, Docker, Vagrant
- Provisioning: Ansible, Chef, and Puppet
- CI/CD: Jenkins, TeamCity and CircleCI
- Monitoring and Notifications: CloudAware, CloudCheckr, Nagios, DataDog