All businesses try to optimise efficiency. Whether it is in the products they use, or the processes performed regularly, finding the quickest and least wasteful way to get things done is important. Many turn to software to take over menial repetitive tasks.
The issue with seeking efficiency by relying on multiple tools and systems is that the implementation of such improvements is not a one-off thing. It takes effort to support and keep them running. If the systems do not align with each other, the upkeep can be just as resource-overwhelming as working without those time-saving tools.
What are managed services
Software implementations solve problems or optimise processes. To provide the best ROI we evaluate the performance of the software solution, but sometimes overlook all of the effort it takes to support the solution itself.
Keeping the software solution, or a combination of them, running smoothly is called a managed service. It includes incident management, version management and ongoing support. A standard for managed service is ITIL, where each stage of the managed service is well defined in terms of roles and responsibilities.
The main properties of a managed service are the SLA and operational KPIs. SLA is a metric for how much time it takes to react and resolve a problem, as well as what is the accepted downtime per year. KPIs are about the response time of the system, how often to upgrade the system, tests and compliance.
The complexity of the infrastructure
Today software systems are running on a complex infrastructure. Usually we have application servers and databases running on virtual machines and docker containers. Additionally highly available systems are running on clusters of servers. Fault-tolerant systems are backed up by disaster recovery sites.
In any custom, the healthcare, medical or financial system is adhering to compliance and is hosted on different datacenters to cover legislations and not store personal data in another region. Moreover, each system has a number of environments such as development, test, staging and production. Such setups are not easy to support by non-trained and specialized personnel. Especially when SLAs and customer needs require 24/7 monitoring for some of the environments.
In my experience, scaling companies fall in the trap of fast expansion – developers or even CTOs take the support duties. But this is highly distracting and requires a lot of extra effort (e.g. waking up at midnight to fix a server issue). Lastly, because this is a side job, people don’t invest in implementing the right processes, tools and automation.
Hiring an external specialised and certified company solves the above challenges. Currently we’re supporting 50+ clients and hundreds of environments in clustered and highly available mode.
Managed Service – Example with a complex commerce organisation
Each new environment is like a new universe. In this case, the company has 5000+ employees who are using three core systems for finance, HR and operations. We took a deep dive with an infrastructure discovery mission. We outlined the current state and future expectations, including SLA and KPIs. We also included a security audit. Once we got a number of instances and evaluated the complexity of each environment, we provided a quote for ongoing support and separate quotes for improvement projects.
Once we signed the contract, we started with installation of an incident reporting tool (portal to log each incident and support or upgrade task). Next step was to install a unified monitoring tool (e.g. Icinga, Nagios) in order to monitor the health of the environments (CPU and memory), but also provide SLA reports.
Lastly, we established support processes for all of the different systems, created maintenance schedules and upgraded schedules.
Upgrade schedules include upgrades from Operation system level up to application servers, versions of Java, upgrade of specific components and even renewal of security certificates.
The cherry top – DevOps
DevOps is the modern way to automate some of the support/ provisioning tasks. To create a new environment, usually you need a lot of manual labor. Instead we’re automating these efforts with tools like Ansible. We also take extra effort to move to platform-independent setup (if needed) with Terraform. DevOps greatly optimises the effort (thus support) and gives extra business agility.