4 Architecting IoT Cloud
219
• Presentation – Handles all interface, manages and routes incoming requests to
the business logic, and displays responses in a specific format (e.g., through web
service APIs).
• Application Business Logic – Executes specific business rules associated with the
request to prepare the response.
• Database Access and Logic – Implements the required logic to store and retrieve
data from the database.
• Application Integration – Merging with other services (e.g., through REST API
or messaging protocols such as MQTT).
Although applications usually have a modular nature, they are most often
bundled and utilized as a monolith. There are several benefits of monolithic
architecture for applications, including [28]:
• Simple Development – The implementation of monolithic applications is very
straightforward compared to the other two options.
• Ease of Testing – The testing process is very straightforward. For example, the
whole end-to-end testing can be realized by executing the application and testing
the corresponding user interface (UI) via Selenium (a portable framework for
testing web applications).
• Ease of Deployment – For deployment, you just need to copy the packaged
application to a server.
• Horizontal Scaling Simplicity – The scalability is achieved by running several
copies of the application behind a load balancer.
Many of the largest, highly successful applications in use today began as
monoliths. While monolith architecture works well in early stage development, it
also has drawbacks, namely:
• Slow Change Speed – Applications can be too large or complex to make changes
quickly and accurately.
• Inconvenient Updating and Deployment – The entire application must be redeployed for each update and uninterrupted deployment is difficult.
• Manual Testing Needed – Because the impact of changes in the application
cannot be tracked and studied very well, extensive manual testing is usually
required.
• Scaling Compatibility – Scaling is difficult if building-block modules have
diverging resource needs.
• Whole Application Reliability – A bug in one module can bring the whole
application down, and because all application instances (deployed in several
servers) are identical, the bug can affect the whole application’s availability.
• New Technology Barriers – Monolithic architecture cannot adapt to new technologies easily. The main reason is that any changes in the application frameworks or application programming language will impact the entire application.
Précédent

- 226/647

Suivant