Several years ago, I came up with a new conference session to show how I created a real cloud app that I applied the same n-tier architecture that I have been using most of my career. The session is called “Rock Your App with a Real World Example”.
Below is the n-tier architecture diagram that I used for most of the 20 years I taught classes at the University of California San Diego and in my conference sessions.
This was the first time I attempted to write a cloud app using Azure. Now that I have that under my belt, I wanted to create a new app using newer Azure features like Azure Functions, queuing and more. At the contract I am currently working on, they use Amazon Web Services (AWS) for their cloud. Most of the developers there are new to AWS (I am very new to it) and we are feeling the pain of getting a few simple Lambda’s (that uses their API Gateway, Simple Queuing Services (SQS) and Simple Notification Service (SNS), Secrets Manager), up and running in production.
At first, I wanted to re-write my cloud app I showed in my conference sessions, but that would take a while and I’m not sure how useful it would be as a “real world example” to others. I finally came up with a app that could show off proper cloud architecture that incorporates n-tier architecture, modified for the cloud of course.
I want to take you on my journey as I write this app from scratch, so I decided to write a series of articles that will detail the ups and downs as we go while comparing what I have learned using AWS. All source will be available on Visual Studio Online, so you can follow along.
You Are My Team!
Though I will be writing these articles from the comfort of my house or up in a plane traveling to a conference, I want as much input from you, the reader and fellow developer. For these articles, you will be my development team! If you have a question, see an issue or have ideas… I want to hear them. All comments will be considered and if I use it, you will get credit for it in the next article.
For this purpose, I have already setup a repository on Visual Studio Online, so you can see the progress of the app. The location is: http://bit.ly/RealWorldApp1. Feel free to start making comments sending me an email by clicking here.
Now I will discuss the requirements of this app. The actual architecture will be discussed in the next article and will include any of your comments! Let me introduce you to the dotNetTips.Utility Dev App (shown below). This app is for you, the .NET developer. Currently it has two features: it quickly finds and backs up all your source to OneDrive (by default) and cleans temp and cached files created by Visual Studio and SQL Server. I plan to add many more features in the future.
In the last release, I added a rotating collection of links on the bottom, so the user can click and see where I will me speaking next, purchase any of my books or watch my videos on demand. While working on the next release, I thought this static data should be updatable via the cloud. At first, I thought about just having the app read a file from the cloud (that would be simple to implement) but since I learn better by doing, I decided to use this as my next Azure learning experience and write an API (or service) instead. Then I decided to write this series of articles and heck, maybe I will update my conference session too!
The main requirement for the dotNetTips.Utility Dev App is to allow the collection of hyperlinks to be updated via the web. The list of other preliminary requirements is below and I am sure they will be familiar to most developers.
- This new feature needs to be done quickly and operate as cheap as possible.
- Use the latest and greatest features of Azure, Entity Framework and .NET Core. These features should be released, not in preview.
- Link data should be easily added, removed and updated via a secure website.
- The API (web service) should be secure and include an online portal for developers.
- When a user clicks on a link, that event should be sent to the cloud to determine what links are being clicked most often by users. (no user data will be stored)
Pretty simple requirements, right? Well what I found out with the last app I wrote in Azure, what I wanted and what happened weren’t always the same thing. Just like in the real world of software development, tradeoffs always must be made due to technology and time constraints.
I hope you will join me in this journey and find these series of article useful for you and your team the next time you are developing an app for the cloud. I’m also reaching out to Azure Microsoft MVP’s for guidance with these articles, so you will get their input too. If you have comments or questions, please send me an email by clicking here.
In the next article I will be outlining the overall architecture for this app, so check back here soon.