Jahia Cloud best practices
There is not much difference between best practices for on-premise and cloud platforms, but with the right level of automation, following a few rules makes the development, testing and content production much more powerful and secure.
This page presents the best practices to manage the environment. You can find development best practices for Jahia here.
Always plan your operations to avoid downtime
Jahia Cloud is built to avoid downtime at all cost: whether you need to deploy code, restart your servers or upgrade the whole environment. We always have straightforward documented procedures to help you answer every visitor requests in a fast and reliable way.
Understanding technical limitations and using mitigation workarounds is a very good way to avoid shutting down the service, or having to perform a complicated deployment at midnight on a Sunday.
- Deploying code on Jahia is very fast and reliable but can generate a few seconds of downtime per node. Performing deployment one node at a time is a great way to perform zero-downtime code deployment.
- Server restarts are performed dynamically by our load balancers and there is no action needed on your side to avoid any downtime. Incoming traffic is directed to the remaining nodes of the environment during a restart.
- Environment upgrades require an environment shutdown and take approximately 10 minutes. However, you can avoid downtime by creating a copy of your production environment, upgrading it, and redirecting traffic to the new environment. All it takes is a quick contribution freeze, and you even enjoy the luxury of testing your new updated environment before redirecting visitor traffic to it.
Always test your operation before applying it to production
There are a few sensitive operations in the life of an application: changing configuration, upgrading, and deploying modules. Always populate test environments with fresh production data to validate these operations before applying them to mission-critical environments.
Assuming everything will fail is the best way to make sure nothing will
That's how we built Jahia Cloud: several data centers per regions, each service is redundant, and data is always available in multiple copies to make sure we meet the highest standards.
When you design your applications, remember:
- Never assume that a server will remain available
- Auto-scaling will summon and remove nodes dynamically for you.
- Clusters will provide you with service and data redundancy
- Capacity planning is key, if you do not use auto-scaling, never run your service at near full-capacity
- When auto-scaling is turned off, always make sure that one browsing node can be removed without impacting your overall performance and stability. Being able to restart one node is recommended for deploying configuration changes and code without downtime. (This is also known as node-per-node deployment)
- Auto-scaling will always reserve the room to absorb an instant traffic surge and will always add new nodes to your infrastructure when its capacity reaches 80%.
Running performance tests before opening the platform to production is a must
Running performance tests that simulate target visitor traffic is the only way to understand how the platform will behave at high visitor throughput. Performance tests are also a great way to understand the weaknesses of your applications and for discovering your application’s breakpoint. Knowing your breakpoint gives valuable insights about code optimization, and behaviors to look for to predict a platform at near-full capacity.
We are always happy to help you design and implement performance tests that are relevant to your use cases. Don't hesitate to get in touch with your Success Manager to get you started.
Check monitoring console periodically
Jahia and Datadog partnered to provide a customized monitoring experience, tailored for our products and for your use. Custom Jahia dashboards provide insights about the health of the application and optimization requirements.
Even though the monitoring platform will send alerts when a website needs immediate attention, it is also a good practice to check the dashboards periodically to understand how the application behaves.
We put a lot of effort to design these dashboards and avoid any irrelevant data and will keep improving it in the future. Any suggestion that might make your life easier is also greatly appreciated.