Theeverygirl.com
is the ultimate online resource helping shape the creative, career-driven woman to experience her life better lived.
See it liveIntroduction
Theeverygirl.com has gained over the years a lot of attention and respect from the readers and community resulting in high traffic increase. The problem that was addressed to our team was to rethink the hosting infrastructure and apply advanced techniques to leverage fast page rendering and almost instant resource access without downtimes or any other server outages. It was the perfect time to jump from an old monolit based architecture to a cloud based one.
Architecture
The initial project architecture was a monolit one, meaning that web server, database and other resources were hosted on a single server also there was no Content Delivery Network (CDN) edge caching implementation in such a way putting a lot of load on server with uncached requests.
Monolit arhitecture is good from cost-saving perspective when your project is still small and does not consume lots of resources. But as soon it grows up it requires granularity and distribution across microservices or different hardware stacks, evidentially the cost increase with horizontal scaling.
Our team came with a decision that Amazon Web Services (AWS) has right services and tools to handle horizontal scaling architecture as well as provides reliability and uptime/auto - recovery. That's why we decided to move forward with it and prepare the codebase for the transition since any architecture change also requires some codebase preparation / changes.
Implementation
As the part of our implementation plan we made sure to calculate correctly what type of server instances to use based on current number of visitors and consumption also a potential buffer on top in case of traffic spikes. As well as correctly configured scaling groups and load balancers help to deal with this on a more longer-term.
A special attention needs to be dedicated to filesystem (images, videos and media assets) and especially to S3 and Cloudfront integration, cache validation and invalidation techniques, expiration caching headers and in-browser based caching - which considerably helps to reduce the amount of requests to the server and offload the load to the cloud instead of the web server.
CDN Edge Caching
It is very important to state the fact that not only media assets such as (images, css, js) can be cached CDN wise but also entire HTML pages for anonymous users. This ensures that the website pages are served statically from closest CDN Edge region and web servers requests decrease to minimum. Basically the power of CDN transforms your website to a cloud based one that decreases the hardware costs even more. The caching expiration time also impacts the CDN pricing, as more time the pages are cached the less cost for CDN would be, because CDNs mainly charge for invalidation requests and served bandwitdh. Below you can find 90% CDN traffic consumption as well as PingDom (client browser) response times.
Conclusion
As a final conclusion, we want to state the Amazon Web Services (AWS) is a perfect solution for any type of project. Wherever you're a small startup you can start with a free tire program that gives you enough buffer to use free and micro instances for a long time to validate your idea and finishing up with huge enterprise scalable solutions or infrastructures. With a vast variety of services you can implement your desired architecture and benefit from resources stability and in case something wrong goes on the instances can auto-recover automatically. Our team has a vast experience with building cloud solutions for businesses, so feel free to drop us a line wherever you have a question or need help with cloud based solution implementation for your business or startup.