|Challenge Topic — Multi-Cloud Madness|
|Creator — Scott Pletcher|
|Goal — Architect and build an image upload and recognition process using no less than three different cloud providers.|
|Outcome — Through this challenge, you can gain some practical hands-on experience with cloud providers with whom you might not normally work.|
|Deadline — January 31, 2021|
In general, I don’t recommend that companies intentionally set out to spread their cloud investment across multiple public cloud platforms. Yes, there are many opinions on this topic and my opinion is of course my own. For every “avoiding vendor lock-in” or “diversifying our cloud investment” assertion, I can counter with “diluted skills development” and “unnecessary complexity.”
Now, it’s one thing to consider the pros and cons of a multi-cloud strategy from the relative comfort of a greenfield scenario, but it’s something totally different when that choice isn’t a choice at all but is just imposed on you by the situation.
Many times, we have no say in the matter. Take, for example, these very real-world scenarios:
- For years, your company was organized into independent autonomous divisions, each with its own IT budget and cloud provider affinity. Now, in an effort to increase economies of scale, the organization has consolidated IT functions and you’ve just inherited five different divisions running on five different cloud providers with five different skill-bases.
- Years of bureaucratic internal processes have fostered various shadow IT enclaves across the organization. Each of these shadow IT groups have adopted cloud computing as a cheap and fast way to accomplish their goals, building out what have become business critical applications. Now, they need to share data across departments.
- We’ve just announced a partnership with two other retail companies to unify our respective loyalty points programs such that customers can use their points for discounts at any store across the three companies. Only problem is that we each use different cloud providers with vastly different architectures.
Whether we like it or not, these scenarios happen. As a cloud practitioner hungry for adventure, get ready to jump head-first into one such cross-cloud conundrum!
Depending on where you’re starting, this will be a challenging challenge.
“Well, yeah, that’s why it’s called a challenge! Let’s GO!”
For this challenge, you will upload an image to cloud storage, use an image recognition service to extract data from that image, then save the data and path to the image into a NoSQL database.
“Oh, that’s way too simple! I could do that in no time flat with [insert your favorite public cloud here] !”
But wait, there’s more! You must use at least THREE different public cloud providers to accomplish this task.
- Create a simple web page that allows you to take a picture via a mobile device or computer webcam. (Use your search engine superpowers here…)
- Save that picture to a storage service on Cloud Provider 1.
- Upon saving that image, trigger a serverless process that calls out to an Image Recognition service on Cloud Provider 2.
- Take the metadata that was received back from the Image Recognition service and store it, along with a URL path to the original image into a NoSQL database on Cloud Provider 3.
- (IMPORTANT) Write a short blog post on your experience and explaining your choices and outcomes. Include a GitHub repo, screenshots or other artifacts that can evidence your hard work.
- (Optional) Now, go look yourself in the mirror and repeat this mantra at least 500 times: “I will never again intentionally architect a multi-cloud solution.”
There are many ways this challenge can be completed and there are no wrong answers so long as you meet the requirements and adhere to the guidelines. Which providers you use for which steps is up to you. Which services you use to accomplish the respective step on each cloud provider is up to you as well. You can use AWS, Azure, and GCP. You could use IBM Cloud, Alibaba, and Oracle Cloud — or any other combination you want, so long as they provide a storage service, serverless options, a NoSQL database, and an image recognition service.
You should be able to do this all within the free tier of most cloud providers. As far as architecture, I want you to opt for fully managed services from the cloud providers. In other words, don’t just deploy pre-made docker containers from Docker Hub or spin up VMs. You should be able to do this challenge without directly using a VM or container.
When You’re Done
You can complete the project requirements by yourself or in collaboration with others. Feel free to ask questions in the discussion forum or on social media using the #CloudGuruChallenge hashtag!
When you finish all the steps of the project, post a link to your blog post in the designated forum thread. I will then be able to endorse you on LinkedIn for the skills you demonstrated in this project: multi-cloud, interoperability. (You’ll also be entered to win some cool swag!)
This challenge will remain available indefinitely, but to get endorsed on LinkedIn and win swag, you need to link your blog post on the forum by January 31, 2021.
Most importantly, the #CloudGuruChallenge is FREE and available to everyone; all you need is an ACG free-tier membership to make your forum posts.
Be prepared to do some Googling, but if you are an ACG member, here are some resources that can help you get more comfortable with the many options available:
Crash Course on Google Cloud Platform
AZ-900 Microsoft Azure Fundamentals 2020
Extra-Challenging Side Missions
Here are some additional bonus side missions where you can demonstrate your absolute command of the multi-cloud universe! (Ok, so some of these are just purely for my entertainment but you’re sure to learn something along the way!)
- From Russia With Love — Make use of Yandex Cloud in your process.
- The French Connection — Make use of OVHcloud in your process.
- Getting all Sappy — Make use of SAP Cloud in your process.
- Open and Free — Use only fully open source platforms to accomplish the tasks. These platforms can be natively supplied as services by public clouds or hosted on VMs. (This mission provides you an exception to the “no VM” requirement.)
- Roll Your Own — Build your own serverless hosted image recognition service using a pre-trained model (ResNet50, MobileNet).
- It’s Not Stupid If It Works — Use DNS records as your database layer.
- Rube Goldberg / Heath Robinson Award — This designation is bestowed upon the cloud developer who builds a completely ridiculous, overly complex, obscene display of cloud design for what is a relatively simple process.
While a multi-cloud architecture might not always be desired, it’s a reality of cloud computing. Hands-on experience with various cloud providers will make you a better developer, architect and decision maker. Plus, it might provide that extra bit of experience that distinguishes you from all the other candidates when you’re ready for your next career adventure.
Be on the lookout for an ACG Project where I’ll walk through some different ways I met this challenge. But don’t wait for me . . . get out there and get busy!