[Day 2] Cloud Resume Challenge with Multicloud’s Always-Free
Hi guys. We’re continuing our journey in making our own Cloud Resume and have it deployed in multicloud using always-free solutions. For those of you who are new to this project, please check out the project intro & research on Day 1.
We are on this roadmap:
- Project Initiation & Research — ✅ Done
- Architecting the Cloud & CSP Selection — 📌 You’re here
- Cloud Project Management (Scope, Cost and Time)
- Deployment & Implementation with IaC
- My Go(lang) Learning Journey
- Cybersecurity Considerations
- Lesson Learnt
Architecting the Cloud & CSP Selection
We ask ourselves a few questions to determine what we are actually doing, so that we can come up with a Cloud solution best fitting the need.
Q1: Static Website or Dynamic Website?
The Cloud Resume can be a simple webpage which is
- hosted on (Public) Cloud,
- built & optimized for Cloud,
- take the advantage of Cloud, and
- could be easily deployed to Cloud
Being a dynamic website which involves database could be an overkill as it does not need to perform any logic. A website simply displaying my projects, related work experience, certifications and education is good to go.
Q2: Server or Serverless?
Having the application deployed to a server is a traditional and familiar way. Just an Ubuntu server with Apache installed and you will be good to go.
However, a Serverless models help shift the responsibility in maintaining underlying infrastructure to Cloud Providers. I will be glad if I am free from patching and securing the OS for this project. Just that be aware that the usage is usually counted by request for serverless, not by the hour you rented the server.
The good news is — the application is stateless — it does not need to remember the current & previous action anyone did, which made serverless architecture implementation easier. Unlike stateful application, external cache maybe introduced into the application logic.
Q3: Will I change some day?
I may. Maybe there is one day I may add complexity to the project and turn it into a dynamic website. Therefore, I want a proxy or a load balancer that facilitates the management of traffic during migration. A load balancer routes requests from path to path, port to port, many clients to many servers.
Q4: How data flows with/within the Application?
The web application consists of a html file, a couples of CSS files, some JavaScript file for client-side scripting. No server-side scripting at the moment. The Cloud Resume webpage just sit there waiting visitors to get it (pull). If does not act on its own with no data operation or acts according to user inputs (push).
Q5: Any non-functional requirements?
- Transparency and Control in Billing: As always-free offers often cover only usage within the quota, it is more financially safe to be able to set budget alerts and limits on the potential spending.
- Security. Abuse should be prevented or limited as it may cause financial implications for a usage-based Cloud service.
- Integrity. Only site owner (me) should be allowed to modify the site.
- Availability. Apparently, I will be embarrassed if a prospective employer visits my Cloud Resume and found the site is down.
- Simplicity for maintenance. Again, I need to work on my own time for this project, and I would like to avoid maintenance as much as possible.
- Free of charge. As this project is not sponsored by anyone else, I want to stick with the always free offerings from Cloud Providers.
- Documentation and Support Community: As Cloud as usually self-service, I evaluate the quality of documentation and the size of support community who discusses the troubleshooting of issues faced with the CSP.
Systematic Evaluation of Cloud Services Providers (CSP) always-free offerings
Step 1 — Formulate Criteria & Weight
Get Tim’s stories in your inbox
Join Medium for free to get updates from this writer.
Having the criteria discussed as the previous step, let’s determine the weight (from 1–5, where as is the most important):
- WAF (x5) — Security is the foremost thing. WAF can block certain attacks on the application layer, such as DDoS, XSS, SQL injection and we want protection from those risks.
- CDN (x3) — Content Delivery Network (CDN) caches static materials which reduces workload to backends, helps improves performance and lowers cost from backend. It also adds a layer so that server do not need to expose directly on the web, which is good for security.
- Object Storage (x4) — As the project is aim at building a static and serverless website, the most suitable hosting option should be Object Storage.
- Load balancers (x2) — In a low traffic expected environment, having a load balancer is an option. But deploying one would help routing and maintenance if one day the project grows bigger. Same as CDN, it also adds a layer so that server do not need to expose directly on the web, which is good for security.
- FaaS (x2) —Although we do not need a dynamic site, I do have a desire to change and improve the project with introducing something fancy in the future.
- Compute Engine (x1) — Again we do not need a dynamic site, and I prefer having serverless over a server for reducing maintenance cost.
- NoSQL Database (x2) — It is not data intensive at the moment, I may change in future and that’s likely we need a key-value store for some lines of text.
- SQL Database (x1) — It is not data intensive at the moment, and even if I further develop the project, the data are less likely to entail complex relationships or require huge computation at the database layer.
Step 2 — Evaluation
It is the time to visit various CSP’s documentations, online forums and also Git readings like GitHub — cloudcommunity/Cloud-Free-Tier-Comparison: Comparing the free tier offers of the major cloud providers like AWS, Azure, GCP, Oracle etc to find out the offers, and how much are those “always-free”.
It is not a comprehensive list of CSPs who also offer always-free, please feel free to comment if you know another good one.
Step 3 — Quantify the Comparison
- The weighting per Cloud Service is put as discussed in step 1.
- With step 2’s evaluation, I compared horizontally and assign a maximum of value 1.0 among the columns for each row.
- The scoring for each CSP is the sum of product, which was made from the assigned value vectored with weighting.
About Non-functional Requirements
Well, it is much more difficult that I thought to weight the non-functional requirements I have on Cloud services for this project, but at least we have some discussions, and we may aware there are actually qualitative factors that are not easy to tell in just numbers.
- Transparency and Control in Billing — “Everything is self-served ” is an important characteristic on the Cloud. I would love to be able to analyse the bill without calling vendors’ support. Also running in my own wallet and my own budget, so I need a tight control on the spending.
- Security — While it has been partially evaluated in functional requirements, security also depends on many factors: The application design, the operation, the security functions vendors provide, how the cloud is configured, how trustworthy and compliant the CSPs are.
- Integrity — It also much depends on the secured configuration on the Cloud and how the application is designed to preserve it during the operation.
- Availability — It should be examined through the design of each service CSP vendor offers. Examples are the promised SLA, the share of responsibility, the options of availability zones and service regions, the reputations…
- Simplicity for maintenance — It has been partially evaluated in functional requirements. It also depends on the design and configuration of the Cloud.
- Free of charge — While there always is no free lunch in the Cloud, there are actions we could take to monitor, to limit the usage within our budget and how the “always-free” have spent.
- Documentation and Support Community — Again, “Everything is self-served ” on the Cloud. The more in quantity and better in quality the documents can CSP provide, the higher expectation I can solve the problem by reading. Also, don’t miss the online forum where people post discussion on various kinds of implementation challenges they faced.
Step 4 — Making Sense with the Soring
- Cloudflare has the highest score, mostly due to the security offerings I valued while other vendors do not offer for free. However, Cloudflare computing service may take less advantaged from the other. That’s why we would form a multicloud solution the combines the security always-free with what’s best from other CSPs.
- Oracle Cloud Infrastructure (OCI) scores the second high, however, as for future growth with FaaS, instead of always-free servers. It features a number of always-free load balancers, but that’s optional in this project. Although their always free offering is sweet, OCI is not my first choice for this project.
- Azure follows. Indeed, I value much that Azure being the only CSP among the five who offers a real budget limit that disable services on reaching the overall monthly spending limit. Other CSPs still capable to alert users when usage reaches the user defined limit. Besides, I had a better time with their documentation than the previous providers.
- Finally, Azure aligns my non-functional expectation + high score in functional requirement analysis, which implies I may maximise the benefits by combining the always-free offerings from Cloudflare and Azure.
Reference: Azure spending limit — Microsoft Cost Management | Microsoft Learn
TL;DR: Cloudflare and Azure won my ❤️.





