This is the article part 3 of the Scalable Node App in Scalable Cloud Infrastructure. If you are looking for part 1, please check it out here, or part 2, please check it out here instead. 🙂
In this blog, I’ll go through scalable infrastructure considerations with Node applications. This means IaaS, infrastructure as a service, type of services provided typically from Amazon, Microsoft or Google type of big players among smaller ones.
So.. We’ll jump right into it. This blog article will be shorter than previous ones. This means that instead of going to deep in the offering, options and configurations with each major IaaS provider, I am going to go briefly through all of them and jump into more details with one specific vendor.
The reason why companies, smaller and larger, enterprises are heading towards cloud based infrastructure, Infrastructure-as-a-Service, IaaS a.k.a. Cloud Computing and Cloud Virtual Servers, is really mainly the purpose of getting flexibility on the current IT management.
Some companies look for cost savings and some companies are keen on transferring their CapEx to OpEx, which means removing of several 100s of thousands of capital investments on IT equipments, servers and related stuff, to a monthly based flexible, pay-as-you-go service from big vendors that do it better than themselves.
Security for public cloud services or personal data/privacy concerns are often the reasons of not going into the public cloud services, which, in my opinion is very much old-fashioned point-of-view. The security and handling of privacy aspects is often in better shape with credible IaaS provider. See my previous blog post on Cloud Security for further details.
As credible IaaS providers I would highlight few biggest and main players on this area.
Amazon Web Services
Amazon has been the #1 cloud service provider within last years, and it still is. It has the biggest service portfolio and the strongest track record and history in providing such services.
Amazon Web Services (AWS) include pure server hosting and cloud computing as well as disk space and networking services. The infrastructure portfolio includes:
- Compute services: virtual servers, contains, 1-click web app deployments, event-driven compute functions, auto scaling, load balancing
- Storage and content services: object storage, CDN, block storage, file system storage, archive storage, data transport, integrated storage
- Database (well, not really part of IaaS services but instead PaaS, Platform-as-a-Service; listed here due to AWS own website listing it as part of offering): relational, database migration, NoSQL, caching, data warehouse
- Networking: virtual private cloud, direct connections, load balancing, DNS
Amazon states that they have over million active customers in 190 countries and they offer 12 months free-of-charge trial to gain good experience and knowledge with their services. Some limitations apply but it is really sufficient to test drive the services, set up few Node application servers and host your application. They have data centers all over the world.
Recommendation: Cloud leader. Cost-efficient. Recommended.
Microsoft’s answer to cloud computing needs is their Azure cloud computing platform and infrastructure. They’ve created it for building, deploying, and managing applications and services through their global network of Microsoft-managed datacenters.
The Azure infrastructure portfolio includes:
- Compute services: virtual machines, virtual machine scale sets, cloud services(why is this listed on their website?), batch, RemoteApp, service fabric, container service
- Data & Storage services (partly PaaS): SQL database, document database (NoSQL), Redis cache, storage (blobs, tables, queues, files and disks), StorSimple, search, data warehouse, SQL server stretch database
- Networking services: virtual network, ExpressRoute, traffic manager, load balancer, DNS, VPN Gateway, application gateway, CDN
There are many other services as well in the PaaS and SaaS areas and like Amazon, also Microsoft offers $200 worth of free credits to get started as well as some other development related resources and supportive services.
Recommendation: Solid performer. Recommended!
Google Cloud Platform
The giant networking and internet company, Google, has increased their investments on enterprise offering within last years. And this can be really seen in the number of growing offerings in the area of cloud services. The Google’s path from SaaS service provider to enterprise-class IaaS (and PaaS) provider has been interesting to follow.
The Google Cloud Platform has services built on top of Google’s core network and infrastructure. They offer following inftrastructure portfolio:
- Compute services: compute engine, app engine, container engine, container registry, event-based microservices, load balancing and auto-scaling
- Storage and Database services (partly PaaS): cloud storage, cloud bigtable, cloud datastore, cloud SQL,
- Networking: cloud virtual network, cloud load balancing, cloud CDN, cloud interconnect, DNS
The Google’s marketing slogan is to “let innovators innovate and let coders, well, just code” which describes their objectives quite nicely. Google Cloud Platform frees you from the overhead of managing infrastructure, provisioning servers and configuring networks. Google joins Amazon and Microsoft in offering free trials to test drive their cloud platform (worth of $300).
Recommendation: Improving rapidly. Highly Recommended!
Oracle, one of the big IT companies, the database company launched last year their public cloud offering (nowadays also offering private cloud services running on top of their state-of-art hardware, such as Exalytics) called Oracle Cloud.
Oracle, in lead of Larry Ellison, is coming to the cloud computing business heavily and fast. They reacted late but have gained significant growth in their cloud business within their first 2 years. It’s going to be really interesting to see how Oracle can compete with Amazon, Microsoft or Google. Their cloud portfolio in relation to infrastructure includes:
- Compute services: dedicated compute and compute
- Storage services: storage capacity, archive storage, shared file storage, storage file appliance
- Network services: site-to-site VPN, FastConnect, VPN for compute
- Cloud machine: cloud services in enterprise own data center
The actual offering in relation to infrastructure is not as wide as with competition at the moment; Oracle is clearly playing a catch-up and has stronger offering in their PaaS and SaaS services. The strong argument for Oracle is the full stack integration between different cloud services as well as their strong install base of on-premise software. Oracle also offers free trial for their compute and storage cloud services.
Recommendation: Challenger. Follow-up and test it out in near term
I was not planning to include IBM as one of the major cloud providers in the beginning. However, looking at their cloud investments and offering I realized that it’s actually a huge cloud player already nowadays. For avoidance of doubt, I do have least experience with IBM’s cloud offerings and thus have to look at their offering from consumer point-of-view and using their public documentation.
IBM Cloud is a high-performing, flexible and scalable cloud infrastructure built on top of SoftLayer solutions. IBM states that their infrastructure is secure, scalable, and flexible, providing customized enterprise solutions that have made IBM Cloud the hybrid cloud market leader.. Interesting! Let’s look at what their infrastructure portfolio includes:
- Compute services: virtual servers
- Storage services: block storage, file storage, object storage, backup
- Networking services: load balancer, network appliances, direct link, domain services, CDN
IBM offers 1 month free trial for using SoftLayer cloud platform. This is quite small period of time compared to other players, however, IBM has also offerings on starting to use their different PaaS services which are pretty nice ones.
Recommendation: No experience, to be considered
Example with Google Cloud
Let’s look at some practical examples using Google Cloud computing services. I am running currently more than 50 virtual servers from which about 40 is running using Google Cloud platform.. Why? Well, just because I’ve seen great improvements in their platform and it’s the easiest way for me to centralize my server maintenance and backend development under the one platform. I am 100% sure that for instance Amazon and Azure can provide the same features.
Google’s administration dashboard is built with latest web UX in mind. It’s responsive and they also provide simple mobile application to check logs, SSH into a server or to see your billing and server status.
Google allows hosting and 1-click deployments of several linux distributions as well as Windows servers (additional license costs will apply). For running a NodeJS applications, I am usually running a latest Debian linux distribution, e.g. Debian 8.3 as of today.
The smallest instance, called f1-micro, is costing about USD 5 per month is more than capable of running Node application with reasonable load. My backend applications are usually using f1-micro or g1-small (about USD 15 per month) instance types with 10GB of disk space: normal 10GB or SSD depending on I/O activities.
For heavy traffic API entry nodes or bigger database entities I am running next level n1-standard-n1 or n1-highcpu-n4 for higher capacity, the latter having already 4 vCPUs in use. For scalability and growth, an individual instance can be grown/modified to have upto 32 vCPUs as of today.
The normal backend configuration includes load balancing and cluster of backend nodes, called Google Instance Groups with automated scaling depending on certain criteria e.g. CPU consumption.
My latest project includes a secure online and mobile payment system, an integration of multiple payment gateways with smart routing and intelligent anti-fraud operations. This project is called PayApi and it’s running completely on top of Google Cloud platform. The scalability is built with automated clusters and flexible NodeJS backend architecture.
With the simplest setup we have today, we can process and receive millions of payments on daily basis and all deployments are executed automatically using chatops running in their dedicated IT management server with secure VPN access and strict access controls.
It’s really fun and very flexible way to control our NodeJS backend servers with nowadays IaaS providers. Scrap your dedicated hardware and start using public cloud services today! 🙂
That’s it for this blog article series. If you have any questions, please contact me using this form.
Thanks for reading!