EDIT: As of 11/18/2024 - This post has been restored pretty much "as is" for now.
I'll be back with more updates soon.
Disclaimer: This post is for beginner to intermediate engineers and developers, maybe even for some seniors & experts. You guys might actually learn a thing or two if you don’t already ‘know everything’. LOL I’ve decided to break this blog post into several parts because there are A LOT of technologies involved and I want to cover them all fairly. Finally, the resources I share here are not paid promotions and so I just hope this helps you like it helped me.
Discovery
To begin with, I’ve included a link to the project below👇🏾 (final builds may vary). Prior to the development process I’d like to introduce the project, discuss the tools and resources I used for development and a bit of their history.
ASP.NET CORE – FullStack Web Development Framework
Blazor – Multi-platform Frontend Framework
MudBlazor – Frontend Component Library (Like Bootstrap)
MSSQL – Microsoft Structured Query Language Database (coming soon)
Ubuntu Linux – Server Operating System (I just 🧡 Ubuntu LOL)
Azure – Microsoft’s Cloud Computing Platform (Infrastructure)
AWS – Amazon’s Cloud Computing Platform (DNS / Domain Hosting & Routing)
To check out my code on GitHub click here! Or the image below. 👇🏾
I have another confession to make. To clarify I didn’t write this code. Well, not all of it. Coding Droplets is the original author of the code. I just forked the repo, cloned it to my machine and edited it to add a dark mode feature and some other things. Because every website should have a dark mode. 😎 🌃 I really like dark mode. Lol
Moreover, for more information about editing other people’s code check out my earlier post about open source and how it all works.
Continuous Integration & Deployment (CI/CD) Pipeline
I’ll be adding new features to this site later on. It’s important to realize Rome wasn’t built in a day, as they say. With this in mind you can get your initial Most Viable Product (MVP) up and running first then make changes and add features to it over time.
To speed up that process I will implement pipelines that will allow me to make quick iterative changes and add features to build on the website which eliminate much of the manual processes involved.
On the positive side this process will allow you to have a foundational product and something to show for your work as you build on it and continue to improve it. To that end you don’t have to be a perfectionist. Only when it comes to security and your user’s safety. Given these points, security is a very important topic which deserves its own series of posts. I will cover this in a future post.
The C# or (C-Sharp) Language
C# is an object-oriented programming language with an interesting history. It was created and released by Microsoft in 2002 with the DOT NET or (.NET) Framework 1.0. Anders Heilsberg and Scott Wiltaumot are leaders of the team that created it. It’s syntax looks a lot like Java in my humble opinion (IMHO).
At the present time, various free resources are available to learn C# online today. I will share some resources that helped me learn. If you take time to go through the official documentation from the company that created it you’ll be in good hands.
The ASP.NET Core Framework
Once you’ve gained a good understanding of the language then you must learn the framework that was designed from it. ASP.NET Core is the framework that will speed up your app’s development and help you to deploy or ship your product and features quickly. The ASP stands for Active Server Pages which is the server-side execution environment in Microsoft Internet Information Server (IIS).
ASP.NET Core’s framework allows you to install additional packages or modules like Blazor that will help you to develop features and components faster instead of writing all of that extra code from scratch. The packages come from ASP.NET Core’s package manager called NuGet.
There’s another frontend component framework called MudBlazor I used to design my app. It allows you to quickly and easily style your Blazor application with components you can customize. It’s REALLY COOL! 😎
Your Local Development Environment
I highly recommend setting up a proper local development environment which includes a good Integrated Development Environment or (IDE) aka Code Editor, although some would argue that Code Editors are not the same as IDEs and I agree. Code Editors are simply that, you edit code with them and that is it. IDEs on the other hand allow you to edit your code and come with awesome features that assist you in development like a built-in web server config you can use to quickly test your website as you build it.
This leads me to Virtual Machines or VMs, they allow you to create a simulated environment where your finished app will be deployed or shipped to. For example if you’re developing an app that’s designed to run in an Ubuntu environment. I recommend setting up an Ubuntu VM server on your development computer and testing your app there before you deploy it to the production Ubuntu server. This will help you avoid issues when you deploy to your live server.
Preparing your production environment
Once you’ve finished developing your application then you have to prepare your production environment to receive the new application. You already know how to do most of this because you’ve already done it in your local development & testing environment. You already know what tools, services and packages your app will need because you will have practiced or done what is called a “dry-run" of the deployment process on your development machine or locally. Azure offers a practice simulator for their cloud environment which will walk you through the process without using any paid resources.
This process will be provisioning a production VM server environment in the cloud. I chose Azure this time because it is part of Microsoft’s C# .NET ecosystem. You don’t have to use Azure though, you can deploy your C# app to any cloud provider that supports your application’s needs. For example, my app needs Ubuntu and several special packages within Ubuntu like the ASP.NET Core runtime package, the Nginx web server package and proper configurations of each. The guide provides instructions for all of this.
From there you will need to replicate that setup and deployment process on your production environment. Once everything is up and running then it is time to transfer your application to the production server.
Deployment aka Game Day
This is the moment you finally present your application to the world by deploying it to a live server that other people can connect to and view or use your application. This process requires careful attention and the use of several tools.
Microsoft has created an entire guide to use in order to properly deploy your application to the internet. I followed that guide to deploy my app using the SCP option to transfer the application’s files to the server.
To be honest (TBH) this was my most difficult deployment yet because there were many steps that needed to be followed intricately and meticulously. I made many mistakes along the way, this is how you learn. This is it, I have released my baby into the wild and you will too. LOL
Monitoring your app
You don’t just let you kids out to play without monitoring them, right? Well the same should apply for apps that you care about. The guide also provides instructions for you to set up monitoring systems so you can keep track of your application’s health while it is active and public.
Security
The guide also gives instructions for how you can set up security systems for your application as well as best practice guidelines to follow to ensure you have done all that you can to enhance the security of your application.
I recommend you follow all of the instructions and advice available for you to protect your application and your application’s users’ data.
Don’t forget to add TLS/SSL to get your HTTPS lock 🔒 Here’s the guide’s instructions on how to set that up. Finally there are further security options like Securing Nginx from clickjacking and MIME type sniffing of which I’ve provided links to those specific sections of the guide.
Thats a wrap!
That’s All Folks!
I will expound more on topics covered here later in this blog series. Hopefully, this has been enough to get you started. Hit my Linkedin below👇🏾 if you have any questions.
Hit that follow button and drop a comment on my LinkedIn if you’d like to see more DevOps or other Engineering content like this?
That’s all I have for you right now! I’ve been up until about 4 am working on that app for you all! I need rest now. 😴 LOL
If you made it this far then you are the real MVP! 🏆
Thank you for reading this! 💙