10 more Rules that will help you build secure, scalable and adaptable applications
Tags: programming, devjournal, systems, beginners
Published: 2023-06-20 01:32:00

The function of a good software is to make the complex appear to be simple. - Grady Booch

10 more Rules that will help you write secure, scalable and adaptable programs:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3cke7h9rv66qpozcbw4.png)


## 1. Use Expires Headers:

For each object type (IMAGE, HTML, CSS, PHP, and so on) consider how long the object can be cached and implement the appropriate header for that timeframe.


## 2. Leverage Page Caches:

Decrease load on Web servers by caching and delivering previously generated dynamic requests and quickly answering calls for static objects. Page caches are a great way to offload dynamic requests and to scale cost-effectively.


## 3. Learn Aggressively:

Watch your customers or use A/B testing to determine what works. Use postmortems to learn from incidents and problems in production. Be constantly and aggressively learning.


## 4. Don't rely on QA to find mistakes:

QA doesn’t increase the quality of your system, as you can’t test quality into a system. If used properly, it can increase your productivity while decreasing costs.


## 5. Failing to design for rollback is designing for failure:

Don’t accept that the application is too complex or that you release code too often as excuses that you can’t roll back. No sane engineer would roll code that they could not pull back off in an emergency.


## 6. Discuss and learn from failures: 

Employ a postmortem process and hypothesize failures in low-failure environments. Learn from everyone and identify the technology, people, and process issues that need to be corrected.


## 7. Be aware of costly relationships: 

Think about database splits and possible future data needs as you design the data model. The cost of fixing a broken data model after it has been implemented is likely 100x as much as fixing it during the design phase.


## 8. Use the right type of database lock:

Understand the types of locks and manage their usage to maximize database throughput and concurrency. Change lock types to get better utilization of databases and look to split schemas or distribute databases as you grow.


## 9. Pass on using multi-phase commits: 

Do not use multiphase commit protocols as a simple way to extend the life of your monolithic database. It will likely cause it to scale even less and result in an even earlier demise of your system.


## 10. Try not to use "SELECT FOR UPDATE":

Cursors are powerful constructs that, when properly used, can make programming faster and easier while speeding up transactions. But FOR UPDATE cursors may cause long-held locks and slow transactions.


The earlier 20 rules: [Link](https://dev.to/pragyanatvade/10-more-rules-that-will-help-you-write-secure-scalable-and-adaptable-programs-2877)


Thanks for reading this.

If you have an idea and want to build your product around it, schedule a call with [me](https://calendly.com/pragyanatvade).

If you want to learn more about DevOps and Backend space, [follow me](https://dev.to/pragyanatvade).

If you want to connect, reach out to me on [Twitter](https://twitter.com/pragyanatvade) and [LinkedIn](https://www.linkedin.com/in/pragyanatvade/).