Software App Cookbook.

Naveen Alavilli
5 min readMay 16, 2020

So, we have many ideas rolling out for websites, web applications, mobile apps, etc., but how many actually get to the people, or err, the World Wide Web?

It is quite common to get stuck, either by lack of motivation, or relatively less expertise on building applications. I thought to try knocking off the latter by articulating the notes I took while I wrote my own application , as an Extended Full Stack Developer.

Well, by Extended Full stack Developer, I mean a developer who managed to get the Web application up and running by :

Setting up Infrastructure + Writing Code + Presenting to the WWW

I am one of those developers in the team, who designs and code a specific module and asks for another module. But writing my own application is totally a game changer. It involves hardware (servers), domain setup, release management, automating tasks, getting reviews, and a lot, without my team that I worked for my projects in office.

My infrastructure was a simple IIS Application Server with a Microsoft SQL database running on my local work system. But after I released it to production, it quickly evolved into this :

System Architecture — Infrastructural

Domain

We have multiple DNS providers, like Google Domains, GoDaddy, NameCheap. I preferred Google Domain just because I can easily integrate with the Google Analytics , Google Search Console and FireBase.

The rates are pretty much same to buy a domain in all of these DNS providers and it didn’t make a significant factor to choosing Google Domains.

Technology Stack

I am relatively better in writing C# and eventually ended up with .Net Core 3.1 — MVC, to write my application. Microsoft .Net Core is solid and is no less than any other competitor out there. The decision to choose a programming language is based on the comfort factor and it shouldn’t really be a big deal in writing applications. Razor pages, JQuery, Bootstrap 4 are enough to build anything worthy.

Database and Application Server

Because it is a Startup, and I am not willing to spend those hard-earned Dollars on expensive Cloud solutions, I needed to do an extensive search for a reliable Shared Hosting Services provider, so that I can run my MS SQL database dependent based .Net Code.

Microsoft’s Azure is the best for hosting a .Net based app, but it turned to be very expensive for my budget. Amazon Web Services, luckily gave a free 750 hours a month of RDS and I was able to hook up my development database to AWS.

Most of the other hosting providers host MS SQL database too , but they lag in the support for current .Net frameworks. Majority are stagnated at .Net Core 2.0, and it is way old and incompatible for my project.

With back and forth email communications with multiple providers, I ended up settling with Accuweb Hosting. They have a shared hosting plan to support .Net Core 3.1 version and also provide enough storage for my files and MS SQL Database.

It took a couple hours to wire up the DNS Settings on my Google Domains area, and get all things working as expected. Google DNS services notified it takes about 48 hours maximum for it to get the website ready though.

And SSL certificate is another important one while setting up our website, and that was provided free in Accuweb. Startups could take anything for free, really !

Email Service Provider (API/ SMTP)

AccuWeb Hosting provided SMTP service, but it is way too complex to setup and I was able to work around using another easy to setup SendGrid. It is easy to configure and simply call their API when our app needs to send out emails.

.Net Core 3.0 and above support direct integration with SendGrid and the emails implementation was done in a matter of minutes.

File Storage

It is about 10 GB of storage space provided by Accuweb : Code and database combined. And 10 Gigs is probably not enough if we need to store file objects on the server. Hence the third party like Google Drive or DropBox come handy. They support .Net integration and it is fairly quick to setup these storage accounts and bind it to the application.

I have a quick demo on using DropBox to store files. Here it is :

Web Jobs

Azure was super helpful to provide Web Jobs functionality. The classic example to use a Web Job is to compress the avatar images of users when they upload to our application. And that’s exactly the reason I needed to configure a Web Job for my application too !

Serverless Functions

Running a timed jobs is an extra burden on the server. And the Azure Functions is an amazing feature that takes a huge load off the server.

Just configure a timed Function to run for every X minutes, to trigger any Controller (functionality) on the project. I use functions to run daily data cleanup and also to send reminders/alerts to my applicable users.

CDN

With my application sitting on a shared hosting server, my application takes significant time to load on a user’s screen who is sitting on the other side of the globe. Content Delivery Network helped to substantially reduce the latency. I saved all my java-script and CSS files on a free Google Firebase hosting service. Firebase mirrors the files to all of its nodes on the globe, and my application can quickly load the necessary DOM files on the client’s browser.

OAuth — Security

Off course, the security is a key piece in the architecture, and fortunately, we already have reliable OAuth providers like Google, Facebook or LinkedIn. They provide seamless integration capabilities to my .Net application and one important task in the To-do drops off the list.

Global Coverage Check

How do we ensure our application runs fine, at least, in the majority cities in the world ? DotCom-Tools it is ! I was able to configure it to run my web application in almost all parts of the world, and also automate it to check the performance every 3 hours. We just need to record a script and schedule it.

Analytics

Once the application went live , we want to know about it usage , and Google Analytics is a fantastic service to get this work done. We can understand the users’ demographics, interests and possible areas in the application that need improvements.

Payments

My application involves payments to/from other users. And Stripe worked out pretty good so far. It has low commission rates and almost global coverage. It is actually better to integrate with the dominant payment provider of the country we are targeting, but overall Stripe is fine.

Search Visibility

Obviously , we wish our applications/sites to be visible in the top if the search results. Google and Bing have their own management utilities so that we can just configure our Sitemap files to work with them. Within a couple days, they will start indexing our sites.

We still have quite a long way to go , including up-scale or out-scale the infrastructure, to implement container based deployments, and logging systems, and so on, but they are probably not a show stoppers for running a startup.

I would appreciate suggestions and improvements to the architecture, to make the system better ! Thanks !!

I am reachable on :

https://www.mybiztag.com/NaveenKA

--

--

Naveen Alavilli

Software Consultant, Architect, AI Enthusiast, Founder, Writer