Building on the cloud, two applications, one platform!
Updated: Mar 10, 2022
Fireside Chat with Endalk: We sat down with Endalk, our Senior Engineer, to talk about his experience of deploying the two versions of Sparta Enterprise on Amazon’s EC2
Q1. Hi Endalk, great to sit down and chat with you. We’ve had the opportunity to work on different environments, notably Firebase for our front-end and Heroku for our back-end, how is AWS different?
Endalk: Hey Yelekal, Thanks for having me. Before diving into the comparison, let’s take a look at exactly what those things are.
Heroku is a container-based cloud Platform as a Service (PaaS). As a Paas, you only worry about the application and data part. It is a fully managed platform that gives developers freedom to focus on their core product without worrying about server, hardware, or infrastructure maintenance.
It offers you a ready-to-use environment that allows you to deploy code with simple commands which are available on their documentation. It is best suited for startups and medium business.
Firebase is Google’s mobile application development platform that helps you build, improve, and grow your app. When you create a Firebase project, the fact is mostly hidden. Creating the Firebase project means you are creating a GCP (Google Cloud Platform) project behind the scenes.
On the other hand, we have AWS. AWS stands for Amazon Web Services, a service developed and managed by Amazon. AWS has many compute features such as Virtual machines called Instances, Machine Images (Amazon Machine Image), Firewall, Automatic Instance scaling, Temporary virtual machines, locally attached disk and more.
AWS stands out by offering flexible, reliable, scalable, easy-to-use and cost-effect cloud computing services. It is a secure cloud services platform which provides Iaas (Infrastructure as a Service), Paas (Platform as a Service) and SaaS (Software as a Service)
For full utilization, it needs a dedicated DevOps Engineer who can configure and manage the infrastructure.
To get back to my point, we use these services for different purposes and we can categorize them into two parts: Development with Staging Environment & Production Environment
We use Heroku and Firebase for development and staging. We have many reasons for using this but the most important one is cost: we asked ourselves, why do we need a paid service if we can do it for free? (Both firebase and Heroku have free Services for Testing Environment) We can use their free services as long as we don’t hit their capacity limit.
As far as deployment is concerned, they offer easy Github workflow configuration, automatic build and deployment, while enabling to pass CI (Continuous Integration) easily with a simple trigger.
For Production, we use AWS for both front-end and back-end for production. More reasons for going with AWS for production are: High transparency of the billing system, its wide variety of tools and resources, its user interface is regarded as more user friendly than Google Cloud Platform. AWS has been on the market longer and more engineers have worked on it and invested in it. It also offers high security and availability
As far as I know, choosing a cloud platform depends on the product we develop or release. Even if AWS is a leader in Cloud Computing, it does not mean it is best for the product you’re building. You may find Google Cloud or Microsoft Azure as best suited for your product.
To summarize, we are enjoying the service provided by AWS’ platform so far and will keep it in the future as long as it is suited to our products.
Q2. As a back-end developer, what were the challenges of deploying both the front and back-end?
Endalk: . The main challenges came from the back-end deployment since it consists of many core logic and databases. To name a few, there was configuring Amazon SES (Amazon Simple Email Service) where we required assistance from the AWS support team to move out the amazon SES sandbox, the Amazon S3 (Amazon Simple Storage Service) setup, configuring the different settings of the database instance along with the protocols and web servers to run Django projects.
On the data migration side, despite AWS having DMS (Database Migration Service), it took a while to move the data. Adding to that, I noticed that whenever there was a database table field or a modified table relation, it made the migration job a bit more challenging.
In order to deploy the front-end, a back-end developer should know some basics of front-end tools and basics of the language. But for me, since I had some experience on front-end tools and languages, it wasn’t hard to perform the deployment process.
Q3. How many AWS services is Sparta connected to at the moment?
Endalk: Currently, Sparta Enterprise is connected to six core services : Amazon EC2, Amazon SES, Amazon S3, Amazon EBS, Amazon Route 53 and Amazon RDS. These services address a wide range of features that are instrumental to building, deploying and maintaining enterprise grade software.
Amazon offers many services, from database management to AWS AI (Source: medium.com)
Q4. As far as maintenance goes, what sort of advantages is AWS going to give us compared to our existing setup?
Endalk: Plenty! Let me give you a breakdown of those advantages with each service: the first one is Amazon EC2, which we already mentioned earlier. EC2 stands for Elastic Compute Cloud. It is one of the most basic and frequently used services from Amazon.
EC2 is a basic virtual machine with customizable hardware components and an operating system. It allows you to run various virtual computers and manage with a single hardware. All the while, it provides a wide selection of instance types optimized to fit different use cases.
EC2 instances eliminate the up-front investment for hardware, and there is no need to maintain any rented hardware. We can use EC2 in AWS to launch as many virtual servers as we need.
The big advantages of EC2 are: Auto-scaling where resources are provided according the needed demand. They either scale up or scale down corresponding to the increase or decrease in demand. Pay-as-you-go consumption model: you are charged by the hour, and you have to pay only for what you use. Increased Reliability: AWS is spread across multiple availability zones (AZs) and we can always store multiple copies of our application in multiple AZs so that when one data center fails or loses data, the application will not fail completely. The last one is Elasticity: Amazon EC2 has the ability to increase or reduce its capacity to meet the increasing or reducing workload, enabling organizations to rapidly scale capacity up or down, either automatically or manually.
The second service is Amazon SES. SES is a cost-effective mail service provided by AWS. With SES, you can send transactional mail, marketing messages, and other types of content to customers.
The third service is Amazon S3: it provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. S3 objects are organized in buckets, which are the main containers in S3. Amazon S3 keeps data secure with the aid of several tools, only accessed by the user who has permission access.
With Amazon EBS (Elastic Block Storage), Sparta will be able to better manage EC2 instances thanks to a block type storage format. Used with the EC2 cloud service to store persistent data. The best part about EBS is that when the EC2 instances are down, the data is. It has multiple storage options such as general purpose SSD, provisioned IOPS SSD. throughput Optimized HDD and cloud HDD.
Alongside EBS, we're currently running Route 53, a DNS service that connects the internet traffic to appropriate servers hosting the requested Web application. It is an effective way to rout end users to applications via the internet. The port which handles DNS for TCP and UDP traffic requests is port 53 and Route is simplified with Routing. That is where the name Route 53 comes from.
Lastly, we implemented Amazon RDS or Amazon Relational Database Service. This service makes it easy to set up, operate, and scale a relational database in the cloud.
With better fetching time, Sparta's BI data is shown almost instantly on the main dashboard page
Q5. This was obviously new territory for you; can you tell us what steps you took?
Endalk: Well, I usually love to dig into new and complex thing. When I had a chance to look into the AWS cloud platform, I combined my experience of deployment on other platforms while reading up on available documentation. I started researching this area a year ago and I have successfully launched two apps on EC2 instances so far.
Q6. If a client requires a multi cloud setup, how difficult will it be to shift towards that?
Endalk: It depends on what service is required on other cloud platforms. I personally believe that there is no service which does not exist on AWS but is available on other platforms. But if we really need it to have a multiple cloud setup, there is no difficulty to shift towards that.
Thanks for your time Endalk. Eager to see how we'll leverage more services for our AI platform!