Dear Friends,
an you please help me find the content where we setup databases for production level. Also if there is any video related publish new release of an application by using the same old database? Any video reference course or advice will be helpful.
Thank you very much for your help in advance.
You almost never do this, in practice, since databases are high maintenance, and clustering is also challenging to get right. What people actually do in production is use a service like AWS RDS, where the service is maintained for you, and you simply consume it in your app. Setting up your own database instance is something you tend to do more in development than in production.
Running a production quality database that is not a managed cloud service requires a company to hire somebody with a proven track record as a senior DBA. As Rob says, it is not a small undertaking. Even running a managed cloud instance, the person responsible for it should at least have some experience working as a DBA. Getting something wrong when managing production data is a BIG problem. Depending on the data, can even lead to legal issues! And again, depending on the data, there are legal requirements as to how it is managed, which experienced DBAs understand.
Hi Alistair,
This is exactly my point. I want to learn and gain hands-on experience with production level setups at a practical, “street level.” I want to try this out on engineer.kodekloud.com or even in my lab environment. Is there any way I can find a list of the setups typically required for a production-ready environment? This would help me practice implementing and refining them. My goal is to learn the following:
- How to deploy a 3-tier application.
- How to set up its database.
- How to make changes to the application and apply them without any downtime.
- How to perform full backups of the application and its database.
- How to intentionally break the application and then restore it with minimal downtime.
While I’ve done many of these tasks individually, I want to practice and approach them as a cohesive, production-level setup.
Thank you for your support on this.
It is a big ask. Unfortunately the answer is “it depends”. Every full stack has its own unique requirements.
- It depends on the architecture, and infrastructure/platform. This can be as simple as a helm chart on Kubernetes, or more complicated like elastic beanstalk on AWS, or even more so if deploying to bare metal servers.
- It depends on the database - SQL or NoSQL, which particular database engine is chosen, whether it’s managed cloud or from scratch and if the latter, whether it’s clustered, has read replicas, etc.etc.
- Similar to #1 - Kubernetes is generally the easiest from that point of view.
- Same as #2. Backup strategies should take into account RPO (see below). Application should not need to be backed up if it follows the principles of 12 Factor. Only data (DB backups), the application source code and configuration stored in source control and/or secrets management systems. Those too need to be backed up unless you’re using SaaS/Cloud managed services.
- For a production system, this is done in terms of RPO and RTO. These should be chosen in terms of “what if everything broke at once”, not just a single component. You do disaster recovery exercises, time how long it takes to get the system running and measure how much data was lost