This week I accompanied some discussions in the forum of the .NET Architects. Among several issues, one in particular caught my attention: Mission Critical projects.
What do you mean by a Mission Critical Project ?
From Wikipedia we have the term Mission Critical refers to any factors ( equipment, process, procedure, software , etc.). it is crucial to the success or completion of an activity or project. It can also refer to a project whose success is vital to the mission of the organization or company’s business.
Speaking of projects, a few examples that I consider as Critical Mission:
- A system of controlling and collecting data from a project in experimental physics for creating the plasma state, running on Debian OS / Linux, with processes in C using TCP, can be considered mission critical to the lab, because restrictions and risks involved in monitoring and control equipment;
- A core of negotiations for the financial market, dealing with millions of transactions per day, involving messaging in the database, distributed cache management, memory resources, etc.., With strict requirements for low latency, is also an example of mission-critical projects.
- A DCS – Distributed Control System Digital – for monitoring and operation of oil burners in boilers to generate steam in a plant, is also a fine example. Steam is a key element in many industrial processes of the petrochemical processing of canned tuna.
- A high-performance transactional monitor, applying concepts such as ACID, MUTEX, CRITICAL SESSIONS, TRAFFIC LIGHT, fault trees, etc., is another example.
- A SaaS system – Software as a Service – on a cloud providers to multi-tenant with Web interfaces, responsible for core billing business is mission critical, with the requirements of availability, responsiveness and performance.
- An automation system to control via margin boxes, for example, to determine the presence of underground trains and wagons in stretches of the road, opening doors, diversion of extension, motion, etc.. The carousel control itself towards compositions is also critical. What is the safest train? A train stopped a train at the workshop or off-street?
- A system for accounting and billing of calls on mobile phones, is also critical;
- In many scenarios, even a system of mail is a mission critical system for the company. Some corporations lose business or simply stop in case of failure in their mailboxes, for most commodities that may seem. Financial impact of the view!;
- A control system for medical equipment such as scanners, CT scanners, ultrasound devices, readers dopplers in real time (oops!) and more sophisticated medical, are extremely critical in their results.
I believe all the above examples as systems of Mission Critical projects are at different levels and involve risks for the company’s business.
So we can highlight three types of risks involved:
- Risk Materials;
- Financial Risks;
- Risks involving human lives;
- Some systems may involve Mission Critical requirements for Real Time , ie, windows of performance and response times well defined, which must be respected. In such cases, the number of processes involved, the volume or the number of calls shot should not interfere in the system response.
What is the response time involved in real time (in milliseconds, for example)? Depend on the scenario we are dealing with, is a channel of feeders with news about politics or filter messages for opening safes security systems in banking.
Typically, conditions of real time are involved in mission critical scenarios, but are not mandatory.
My point here is that we cannot consider as Mission Critical project only on the aspect of performance and response time involved. For some industries, other attributes are just as important as the financial impact, availability and other risks.
How critical is the system you’re working today? It involves financial risks, human risks or material risks?
In short, what is the impact of a failure in your system for running the business of your company? Aspects such as disaster recovery, exception handling, fault tree, etc.., Become important in many cases.
Once identified the mission-critical scenario, how to conduct the project?
Some questions are recurring now as:
- What is the best operating system for each scenario?
- What is the best programming language for each scenario?
- What is the best approach patterns for each scenario?
- What are the restrictions of memory and disk to the OS? Scarce resources? Desktops? Servers?
- What are the needs of communication with various peripheral devices and mission-critical in this environment?
- What are the drivers available for OS of choice? We will have to implement these drivers? Are there vendors in the market?
- What are the latency and network transport stacks supported? TCP is enough? IPv6? Will we need to adopt protocols for Real Time (RTP – Real Time Transport Protocol)? Will we implement custom bindings for message delivery with low latency? Transportation customized?
- What is the need for real time, parallelism of processes, high performance computing, cluster computing or grid computing?
Not to mention even on issues surrounding it such as:
- What will the necessary support for the solution?
- How will the evolution of the software stack over time?
- What is the profile of trained professionals required for the project?
- What are the patterns and development guides available?
- What are the tools for building software, methodologies, documentation, etc..
There are several resources that address these scenarios, either on the platform .NET or even on unmanaged code, with processes in C + + on Windows Server. In the managed environment, resources and service interfaces in WCF – Windows Communication Foundation, messaging with MSMQ, parallelism, synchronization and integration systems with low latency are examples. In all cases, the impact to the company’s business is present.
Soon, we will need new resources available on the Microsoft platform, such as Dublin (for dedicated hosting services and processes on Windows Server), Velocity (for distributed caching and high performance applications)..
Finally, try to identify which scenarios of Mission Critical Projects you are personally involved and how will these develop in the coming time. You will notice that your IT has a direct impact on the success of your company!