We help IT Professionals succeed at work.

Develop a software for the cloud

Hi, I am an old programmer so that's why I will ask a question that can be considered dummy for the modern colleagues.

I have an idea on a system I would like to develop, know everything that is required functionally and know how would it be done... In the old days (html, sql, etc.)

But I am fully aware the technologies have changed, and changed a lot! So I need an advise on what modern technologies to use.

These are my questions:
1. Allow users to connect from anywhere on internet.: So I supposed It should be a cloud based system.
2. Programming lang: This worries me the most! If I develop a system in C#.Net with SQL server, is it easy to move it to the cloud? or Should I develop with Azure SQLfrom the beginning?
3. If I develop the software for the Microsoft Cloud, is it easy to use it in other cloud platforms like Amazon o Google? or should I have to develop in different languages?
4. Is there a programming lang I can use to develop once and use it for Microsoft Cloud, Amazon and Google platfomrs, also?
5. Is it recommended to use C#.Net for the cloud?
Comment
Watch Question

1.  To have anyone access your program, you need it to run on a server somewhere.  That server doesn't need to be in the cloud (i.e. rented from someone else) but that's probably the easiest solution.

2.  You can use any programming language you like, so C# is fine if you know that.  Java is very similar to C# and will be a bit easier to run on any server you wish to use, but C# is certainly fine.

The choice of whether to run your own database (e.g. SQL server) or use a service (e.g. Azure SQL) is a much bigger one.  The service will tie you to a particular cloud (e.g. Azure) while any cloud can run SQL server.  But running your own database is more work.  If this is for a production environment where you want replication and backups, then a cloud service will handle all of that for you which is a big benefit.

And if you built it for one service (e.g. Azure SQL) you could still move to another cloud provider one day, it's just it would be more work than if you used your own database (e.g. SQL server)

3. C# + SQL server you can move around from cloud to cloud.  But C# + Azure SQL would be hard to redo for another cloud.

4. As I mentioned Java is a bit easier to move, because C# is best when running on a Windows server, which is a paid product itself.  Java runs on Windows, but also runs on Linux which is free (C# can also be made to run on Linux, but it's not it's natural home and you may run into some problems).

5. You should use a language you know.  C# is fine.  Most any language can be run in the cloud.

Doug
Chinmay PatelChief Technology Ninja
Distinguished Expert 2019

Commented:

Hi Jose,


1. You are right. Cloud also allows you to move quickly as it requires less upfront cost and removes a major headache of managing everything on your own.


2. Do not worry. C# + SQL or C# + AzureSQL - you can easily migrate around. I am leaning towards PostgreSQL nowadays but I have my reasons (and some really nasty Gotchas as well).


3. This is why I have chosen PostgreSQL, All cloud providers support Microsoft SQL Server so that should not worry you either. It is more about your comfort level with the database.


4. C# and .Net Core should allow you to run on Microsoft Windows, Linux and even on Mac so you are covered there. And you might find it surprising but even Microsoft SQL Server is available on Linux (in case you want to give it a shot).


5. C#. Net is one of the most popular language to code on Microsoft stack. Being the first class citizen of .Net world, C# always receives the latest features first. Also, if you target a complex scenario on Microsoft Stack, there is a greater chance you will get help on C#.


HTH,

Chinmay.

Chinmay PatelChief Technology Ninja
Distinguished Expert 2019

Commented:

And I forgot to mention, .Net Core is open source ;)... Enjoy!

Cloud is just a platform where you don't need to manage the hardware or even the OS. You may access the cloud in several various ways, e.g. you may access Windows Desktop via RDS and develop software as if you were in Windows, or you may use the cloud to host your internet applications etc.

Basic cloud types are described e.g. here: https://www.globaldots.com/blog/cloud-computing-types-of-cloud

Almost all internet providers offer some kind of hosting subscription program which includes databases, ASP.NET, PHP etc. Hosting program is the basic cloud service in fact. Cloud offers much more, namely (price dependent) scalability so you may ask for more CPU cores, more RAM, more disk space. Everything is reconfigurable in minutes. End users of your application should not see any visible difference between the internet application running on company intranet or in the cloud. Just the URL may differ.

The application portability depends on the specific features of given environment hosting in the application. .NET Core should run in many different environments but you'll still find certain parts which will need a small update or several switches to ensure the application run "anywhere". But don't worry to start programming.

And where to start? That's a question of the future goals. Azure is good if your potential customers are large companies. If you subscribe for MSDN then you can use Azure for development which is almost free. Small customers which prefer lower price would appreciate e.g. Rackspace or AWS.
David FavorFractional CTO
Distinguished Expert 2019

Commented:
These are my questions:
1. Allow users to connect from anywhere on internet.: So I supposed It should be a cloud based system.

As Chinmay suggested, this just means you're writing server based software.

Might be a site built around a CMS like WordPress or an API.

"Cloud" - Drop this term from your vocabulary... It will only "Cloud" your thinking.

"Cloud" - Normally refers to very slow VM software slicing up very fast servers, so "Cloud" is code for slow running systems.

2. Programming lang: This worries me the most! If I develop a system in C#.Net with SQL server, is it easy to move it to the cloud? or Should I develop with Azure SQLfrom the beginning?

My normal approach is writing code using MariaDB, as there are many pluggable storage engines covering every data access pattern imaginable. In fact the Facebook MyRock storage engine provides support for blazing fast heavy write data access patterns.

I normally use Apache + FPM PHP + Opcache for simple to understand code running at high speeds.

When choosing a language consider focus of free development dollars you can leverage.

PHP is a good choice, as WordPress/Laravel/Other Frameworks, are all written in PHP, so there's currently massive development dollars poured into PHP. Each release boosts performance. PHP-8.0, when released, looks to be potentially same type of increase as PHP-7.X was over PHP-5.X so if you stick with PHP you leverage all these free developers.

3. If I develop the software for the Microsoft Cloud, is it easy to use it in other cloud platforms like Amazon o Google? or should I have to develop in different languages?

See above. Avoid "Cloudy" thinking.

If you're looking for 100% free software (with no license fees) stick with LAMP Stacks.

LAMP - Linux + Apache + MariaDB + FPM PHP.

Also LAMP Stacks scale forever across cheap commodity hardware with tuning practices being well understood.

For example, a well tuned WordPress site can easily run at 1M+ requests/minute throughput.

Note: When measuring performance, always run your test tools on the local machine, otherwise you'll be testing your Internet connection speed, not true site throughput speed.

4. Is there a programming lang I can use to develop once and use it for Microsoft Cloud, Amazon and Google platforms, also?

Answered above.

5. Is it recommended to use C#.Net for the cloud?

No real recommendation. You'll determine your own requirements.

For me, I prefer the 1000s of developers working on PHP daily for free, to produce rock solid + fast software.
Yes, if you have enough money or enough free time then you may develop software for a free. If you still need to pay your bills then for how long you may do it?
Mark EdwardsChief Technology Officer

Commented:
I have a quick question about all this talk about software that's "free":  Does it come with support and easy-to-use interfaces?
If so, what do you recommend as far as the "free" software.
If not, then don't you have to "pay" for someone's "packaging" of the "free" software with their "paid" support and utilities (i.e. Red Hat?)
If you don't pay for it, aren't you on your own?

Please be honest about "free" software.  I hear a lot about the "Microsoft Tax", but don't you get a lot more than what you would get if you downloaded just their bare-bones software for free with no support or utilities?  There's a lot of companies making a lot of money taking the "free" software and building support packages around it and selling that (i.e.  Red Hat...)
nociSoftware Engineer
Distinguished Expert 2019

Commented:

@pcelba: David meant the plethora of Solid tools out there that already exist and you can extend by yourself. And in the mean time you're invited to use the tools mostly without paying a fee... If you Change the tools you need to publish the tools.


@Jose Perez, 

Cloud is nothing "Special"  it is the commercial word for outsourcing of hardware, or even software use "As a Service". 

You can even run the service from your own house IP connection  (depending on capacity and popularity of your application).


WRT. languages...

You can write in Cobol or Fortran if you like... i guess it will be harder than PHP, Python, GO or other languages that are built to be used on networking tasks


WRT. environment...

There are capable database tools, which one is probably not too relevant. Which ones you Know or You can obtain if you decide to use some Cloud server (Amazon, Google Cloud, Azure or one of the others..., or run a bare service server...).


Maybe look around a view a few tools like Nextcloud as a personal data service , or Wordpress, or Drupal,  .... so many available "half" products that just need contents to be made useful.   Many of those are written in PHP. 

Author

Commented:
Thanks a lot. Good answers.
David FavorFractional CTO
Distinguished Expert 2019

Commented:
Along the lines of noci's comment about the term "Cloud".

Whenever I see "Cloud" I translate this as 10X more dollars at 90X speed reduction.
Whenever I see "Cloud" I translate this as 10X more dollars at 90X speed reduction

Certainly that may have been your experience David, but I wouldn't think that was a widely held view.  To most people a cloud server is very similar to one you run yourself in a data center, except somebody else is handling the management of the server.

If you move to cloud services (not cloud servers) then that may well come out much more expensive for the throughput.

But today most people recognize that you can get better total utilization from virtual servers over bare metal ones (which I assume is the comparison point in a data center?) so total cost should be pretty similar for a certain amount of throughput.

At least in our case when we moved a highly tuned app from data center to cloud servers we got a 50% speed boost for the same price point.  That didn't come immediately, we needed to understand how to optimize for the cloud first.

Everyone's mileage may vary, but I think the general assertion that cloud tends to be slower and more expensive doesn't need to be true.

Doug