Axel Wogawa, on September 16, 2020, 04:16 PM
Industry 4.0: Pros & Cons of Cloud Computing in Smart Manufacturing
In his previous blog, Industry 4.0: Cloud-Based Equipment Health Monitoring, Axel Wogawa offers insights on approaching the development of cloud-based IIoT manufacturing solutions.
Cloud computing is a key enabler of modern Industry 4.0 automation solutions. Likewise, Industry 4.0 – the automation of manufacturing through the use of smart technologies like artificial intelligence (AI) and the Industrial Internet of Things (IIoT) – is critical for today’s manufacturers.
Cloud computing can offer significant advantages when it comes to the computational power required for applying AI and other smart manufacturing technologies. However, there’s quite a bit of uncertainty regarding suitability of cloud computing in many industries, particularly manufacturing. For this reason, we’re going to explore cloud pros and cons by addressing the following questions:
- What advantages does the cloud offer over conventional on-premises computing?
- What are the drawbacks and pitfalls?
After reading, you’re going to be able to assess the cases in which cloud offerings are a suitable choice for your project and when you should instead rely on self-managed infrastructure.
What is Cloud Computing?
Before diving into the pros and cons, let’s clarify what cloud computing means. A Cloud Service Provider (CSP), like Amazon, Microsoft, or SAP, provides large server farms where cloud customers can rent portions to build and run their own applications. CSPs offer three kinds of cloud services:
- Infrastructure as a Service (IaaS): virtual computing infrastructure, like virtual CPUs or network components,
- Platform as a Service (PaaS): virtual infrastructure with a software platform on top, like Virtual Machines (VMs) including an Operating System (OS),
- Software as a Service (SaaS): ready-to-use applications, like cloud storage applications or a cloud-based Enterprise Resource Planning (ERP) system.
Each of these services can be used immediately by the cloud customer, while the CSP manages all underlying aspects, like virtualization, OS patches and the physical computers.
There are several advantages of leveraging cloud services rather than traditional on-premise computing capabilities including scalability, flexibility, and development efficiency to name a few…
Scalability and Flexibility
One of the most important advantages of using virtual infrastructure that is managed by a service provider is that this gives you great flexibility. Cloud services can be instantiated, configured and deleted on demand at the click of a button. So, if you notice that your server is hitting a performance limit, then you can simply reconfigure your VM by increasing its RAM or CPU capabilities rather than having to buy and install additional hardware. Some cloud services even support auto-scaling, meaning that the underlying computing resources automatically adapt to varying utilization rates.
This flexibility is particularly useful for applications with unsteady load, short-living applications like prototypes or proofs-of-concept, or for infrastructure that changes regularly.
Another key advantage of the cloud is the speed and simplicity of developing complex set-ups. Since the CSP manages everything behind the scenes, engineers can focus on the functional part of an application rather than having to deal with the whole environment, like runtime installation, network configuration or database set-up. SaaS offerings, like Microsoft Azure IoT Hub, are shipped with basic functionality included (e.g. Azure IoT Hub’s device management capabilities). This translates to functionality that doesn’t need to be reinvented, and development time and efforts that are greatly reduced.
Cloud services are also flexible regarding costs. Many services come with consumption-based payment, so that customers are only billed for what they really use. Conversely, in an on-premises scenario, one would need to purchase and maintain static infrastructure designed for the maximum expected workload. With the cloud, one can overcome this inflexibility.
A CSP employs specialists in many areas, who update and maintain the infrastructure, platforms, and software around the clock. This means that OS patches are being applied in real-time and service functionality is being constantly updated. Additionally, virtualization, availability zones and automatic failover techniques make cloud applications resilient against outages of singe physical resources or even a complete data center. This creates a level of security and reliability, that can hardly be reached in an on-premises scenario.
One last point is the documentation and support offered for cloud services. CSPs offering services for special areas like IoT, typically have deep knowledge in these fields. Service documentation describes how to use and combine services, helps engineers to follow best practices and often gives useful background information. Professional support teams can help you fix problems at any stage of your application’s lifecycle.
While cloud services offer some significant advantages, there are also risks involved which must be carefully evaluated…
One of the biggest drawbacks of using public cloud resources is the lack of control over what happens to your data. Users have to trust the CSP to handle their customers’ data responsibly, to properly isolate multiple customers from each other while using shared resources, and to manage their infrastructure as securely and reliably as they claim to.
Another issue is the increased attack surface introduced by connecting local resources to the internet. Even with well-established security measures, any system with an internet connection can never be as secure as an entirely closed one.
The critical factor with these issues is careful evaluation of these security and privacy risks to determine whether or not it is possible to mitigate the risks through encryption, authentication, data anonymization or other strategies.
Unreliable Internet Communication
Transmitting data over the internet also causes reliability and timing issues. Today’s standard internet communication protocols are not deterministic. That means, you can’t be certain how long it will take to send data to a certain endpoint (due to dynamic routing, network utilization, eventual package loss etc.). Thus, internet communication can’t meet hard real-time requirements. Additionally, the connection may eventually be lost resulting in complete unavailability of services. Cloud applications need to be designed such that timing and availability of the remote portions aren’t critical, e.g. by adding local computation.
Lack of Control over Resources
The lack of control mentioned earlier also affects the design and implementation process. There are many fewer degrees of freedom in choosing technology, compared to a local set-up under your full control. For example, serverless compute services like AWS Lambda or Azure Functions only support a reduced set of programming languages. Cloud engineers have to write their functions in one of these languages or they cannot use that service. In addition, cloud services are not fully transparent, often making it difficult or impossible to find out what’s happening under the hood. This may lead to problems, especially with testing and debugging.
Cloud services are often quite vendor-specific, which means that a storage service of Amazon might have different features and interfaces than comparable services of Microsoft or Google. The same goes for a cloud service compared to an on-premises equivalent. Migrating to the cloud or from one CSP to another can become a difficult task. Thus, the selection of the right provider needs to be made carefully.
Young and Fast-Evolving Technology
Cloud computing is a relatively young phenomenon, that permanently grows and changes. Regular service updates require high attention for breaking changes or even service end of life. Unlike in a local environment, applications cannot continue running on a deprecated platform. Additionally, some service offerings are not entirely mature yet. In our studies, we observed some special cases, where services crashed without any logging or notification or where development tools didn’t work as described in the docs. Even though the majority of available features seem to be very stable, cloud customers need to be prepared for occasional “growing pains”.
Is the Cloud Right for You?
Clearly, there are lots of things to consider when considering a move to the cloud. It is neither The cloud is the greatest thing on earth, everyone should use it! nor The cloud is an obscure trend that should be avoided! It is much more complex than that. Ultimately, you will find as many arguments against as for it:
The cloud is good for you, if …
- … you expect unsteady compute workload or want to get rid of static infrastructure restrictions
(see Scalability and Flexibility)
- … you want to reduce engineering time and infrastructure management effort
(see Engineering Velocity)
- … you need an adaptive cost structure or want to reduce up-front investment
(see Cost Flexibility)
- … you have high service quality requirements
(see Service Quality)
- … you want to leverage high-quality documentation and support
(see Engineering Support)
You should avoid using the cloud, if …
- … extremely sensitive local network infrastructure or data is involved
(see Security/Privacy Issues)
- … hard real-time requirements or stable connections are mission-critical
(see Unreliable Internet Communication)
- … you have very special technology requirements
(see Lack of Control over Resources)
- … you rely on migration flexibility
(see Vendor Lock-In)
- … you’re going to build extremely long-lived applications
(see Young and Fast-Evolving Technology)
Making a well-informed decision about the cloud requires careful analysis to evaluate the pros and cons. Often times this does not require a binary decision between full cloud migration and no cloud at all – hybrid solutions (edge/fog computing, hybrid cloud) can be a good compromise. For example, timing- and security-critical parts of an application can keep running on local infrastructure, whereas the performance- and flexibility-dependent portions can be shifted to the cloud. Thus, you can leverage the power of the cloud while mitigating its most deterrent drawbacks.