In this post, I use Amazon Web Service cloud (AWS) as an example for my analyses of how Cloud Computing and Service Oriented Architecture (SOA) are used together.
Cloud computing vs. Service Oriented Architecture
According to Microsoft, “Service Oriented Architecture (SOA) has become a well-known and somewhat divisive acronym.” (Msdn.microsoft.com, 2017).
In my view, the main reason why cloud computing adopted the Service Oriented Architecture (SOA) is due to wide industry acceptance and the style of design. In SOA, the most important building block is a service consumed by either end client or another service. The added benefit is that services can interact through a distinct set of messages, a model that truly found a new meaning in cloud computing. Another advantage of SOA is that each service is created as a stable block, who’s only changing part is the configuration and data/log accumulation.
Amazon Web Service Cloud
The great example of SOA usage in cloud computing is Amazon AWS, which offers multiple platforms and foundation services. Looking at the list of the Amazon AWS services, it is immediately clear that Amazon is leveraging the service oriented architecture effectively, allowing customers to easily build the scalable web applications, by using each of the services as a stable and easy to configure building block, that can be used separately, or linked together with other AWS services by means of using specific, well-defined communication methods.
Amazon Web Service cloud is offered in cloud service model of deployment model and can be used in multi-user as well as multi-tenancy scenarios. Figure 1 exemplifies the sheer scale and variety of on-demand services currently available through Amazon AWS cloud virtual services.
Figure 1 – Cloud Products & Services – Amazon Web Services (Amazon Web Services, Inc., 2017).
Web Application in Amazon AWS – My Scenario
To illustrate the main benefit of service oriented architecture with cloud computing and virtualization, I have created a diagram (Figure 2) that shows on example how I would go about building a web-based application that is completely based on Amazon Web Service cloud. There is hardly a better way to demonstrate the actual benefits of service-oriented architecture and its adoption in the cloud.
Figure 2 – Web Application built on top of Amazon Web Services (Jozef Jarosciak, 2017).
Let me explain this on a little more concrete example. Let us assume, that I am developing a web application that allows my clients to create generic forms and then produce the outcome in MS Word or PDF format, which can then be shared with our client (through Amazon S3).
As we can see in my diagram above, the client would follow this path:
- I’d first use Amazon Route 53 as a DNS service, allowing me to route the users to my web application. Or in other words, the client of my app would go from any Internet location to Amazon Route 53 DNS server, that points to my EC2 load balancer IP address
- Then Amazon Elastic Load Balancer would pass the traffic onto the least busy EC2 Apache web server sitting in the DMZ. Amazon Elastic Load Balancer simply directs the traffic to healthy Amazon EC2 instances of Apache web servers. In this way, I achieve consistent application performance.
- Apache would then direct all the traffic from DMZ to LAN zone (likely through a mod_proxy – so a simple pass-through) where I would have a Tomcat, JBoss or some other type of application server
- Application servers would be configured to store session data in Elasticache.
- Application servers would also connect to Amazon Aurora database to store user-created generic forms in DB.
- Application servers would host a Java based application that creates final document for user to print or share
- The important and newly added Amazon S3 part is the one, where Application servers (that host my Java based application) would store the final document in MS Word or PDF format document into an Amazon S3 storage,
This solution would be elegant because Amazon S3 by default allows sharing of the stored objects with any third party. That means that I wouldn’t have to create such a sharing system from scratch, which would be a costly exercise. I need to note here, that all S3 objects are by default private, but the object owner has the option to control the access permission of every stored object. So, this is the part, which I’d do programmatically. Meaning, that once the client of my application generates the final document, the application would create a pre-signed URL, which would be given to the customer. Or in other words, the customer would receive the pre-signed URL for every document they receive, which will allow them to access the object (final document in PDF or MS Word format) from anywhere on the Internet.
BTW. The object sharing is a known option of Amazon S3. According to Amazon: “When you create a pre-signed URL for your object, you must provide your security credentials, specify a bucket name, an object key, specify the HTTP method (GET to download the object) and expiration date and time. The pre-signed URLs are valid only for the specified duration.” (Docs.aws.amazon.com, 2017).
The following statement published in IEEE Internet Computing magazine, summarizes the benefits of service-oriented architecture in cloud computing: “Although the main idea behind SOA is valuable, it’s hardly Earth-shattering: abstracting your business services and separating them from your applications can yield an overall system that’s easier to build, maintain, and extend.” (Vinoski, 2007, p.11).
Vinoski, S. (2007). REST Eye for the SOA Guy. IEEE Internet Computing, 11(1).
Msdn.microsoft.com. (2017). Chapter 1: Service-Oriented Architecture (SOA). [online] Available at: https://msdn.microsoft.com/en-us/library/bb833022.aspx [Accessed 11 Jun. 2017].
CCENG. (2017). Cloud Computing Fundamentals and Cloud-Based Services Engineering. [online] Available at: https://elearning.uol.ohecampus.com/bbcswebdav/institution/UKL1/201760JUN/MS_CKIT/CKIT_523/readings/UKL1_CKIT_523_Week02_LectureNotes.pdf [Accessed 11 Jun. 2017].
Amazon Web Services, Inc. (2017). Cloud Products & Services – Amazon Web Services (AWS). [online] Available at: https://aws.amazon.com/products/?hp=tile&so-exp=below [Accessed 11 Jun. 2017].
Docs.aws.amazon.com. (2017). Share an Object with Others – Amazon Simple Storage Service. [online] Available at: http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html [Accessed 12 Jun. 2017].