This article reviews the dedicated Vietnam server, introduces some concepts for cloud server and discusses tactics for effectively migrating into a cloud platform.
1. The dedicated Vietnam server
For a long time, SMEs have appropriately built or leased the dedicated web servers sized for a particular app and accepts that the bulletproof and scalable architecture will be cost prohibitive.
Whilst this approach avails the simpleness for both the cost and management, it also does expose significant threat as a single point of failure. A hardware failure, system compromise or unprecedented traffic can mean significant downtime. Even with the promise of “no more than a half day” to bring a replacement server online, the opportunity cost of having a web app offline could be disastrous for any business. Besides, the dedicated Vietnam server forces users to overpay for dedicated resources capable of handling anticipated peak traffic, only to let that capacity rot during off-hours.
2. Move to the cloud
A cloud platform not only removes the single point of failure but also provides users with the advantages over a dedicated Vietnam server:
- Low cost load-balancing to delineate pools of servers and even spread load across multi-DC.
- Database containers remove a common bottleneck by allowing horizontal and vertical scaling.
- Automatic scaling with the ephemeral servers supports real time demand without overpaying for computing resources.
3. Cloud server core concepts
Prior to architecting a migration, it is vital to understand a few core concepts and design patterns which will allow a web app to become capable of expanding and contracting as traffic ebbs and flows. Many of these concepts have been around since the early days of DC, others arrived as virtualization evolved. However, none of them have been available to us with a credit card until cloud computing become a commodity.
Load balancers bind to an endpoint with an IP address and distribute requests to and from 1 or many registered computing resources.
Whilst load balancing can be used for many kinds of services, web apps can utilize load balancers as endpoints to pools of servers listening for HTTP/HTTPS requests. Smaller apps may have one load balancer to serve as the endpoint for an URL in DNS and distribute load across a few Vietnam server hosting, whilst large apps may have load balancers for various tiers of web servers and even for distributing load across DCs for expansive redundancy and fault tolerance.
Cloud platforms have introduced specialized database container services which are not only fine turned on bare-metal specifically for the database engine, but also offer enticing features beyond just dedicated processing power.
Most of the platforms incorporate facilities for instant rollbacks, automatic failover, elasticity, automated incremental backups, and the ability to utilize read replicas that can become instrumental in distributing an app across multi-DC.
Auto-scaling is the simple but revolutionary concept of allowing an app footprint to expand and contract based on current load, or demand. As the demand for resources increases toward the limits of the running system, additional ephemeral servers are instantiated, made available to help meet demand, then subsequently destroyed when load subsides.
Most of the cloud platforms offer GUI tools and APIs/SDKs which allow their users to define rules for triggering scaling actions based on different conditions. Others include templates for adding/removing dedicated Vietnam server, and controls to prevent over-spawning of servers.
For the platform which does not have explicit tools and rules for scaling built into their offering, it can implement scaling by building a sort of “conductor” process to survey the load of each instance and add or remove resources.
Optimize the performance
Whilst there is no one-size-fits-all approach for migrating from a dedicated Vietnam server to a cloud platform, there are a few techniques which we find instrumental in making a web app of any size scalable by untangling an app’s layers and redefining them as distinct components which are capable of independently scaling.
Most of the modern app frameworks have some sort of caching mechanism that reduce processor overhead per HTTP request drastically and allow dynamically generated web pages to exist as static resource. If caching capabilities are not already exposed to an app, then implementing a custom solution with Memcached as a caching platform may have a dramatic impact.
For most web apps relying on commodity relational database platforms, platform-provided specialized database containers provide the sweet spot of performance, fault tolerance, elasticity, ease of administration and price.
If an app has multi-databases, it may make sense to break them into multi-containers, depending on their purpose and frequency of use, or to delineate access controls for improved security. Tables containing summary data for internal reports may benefit from being isolated from the rest of the system and locked down tightly.
Move assets to a CDN
By offloading HTTP requests and bandwidth for static assets from a dedicated Vietnam server to a globally distributed network, CDNs help free up server workloads.
There are myriad of SaaS micro services provided by each of the major cloud platforms. Platform services exist for email search, delivery, logging, notifications and so on.
These services/facilities may reduce computing resource consumption/operating cost while improving performance and saving development time.