Modern Application Best Practices
In the last decade, there has been a lot of improvements in the way we develop systems. But in my last 5 years in the industry, it feels like we are still in the 90s. Many of our institutions are still using the old trusted ways.
Companies that are adapting new technologies are taking the lead in the market.
How can we ship good quality systems in a good time?
Do not forget the former ways
Solid design principles, Data Structures, algorithms, Design patterns, all these things are still applicable in today’s system development. Agile development and 12-factor applications did not come to replace these old and true principles.
Adapt Micro-services Architecture
This architecture gives you the ability to separate your concerns, the failure of one service should not affect the other.
Some services work better in a specific environment. With microservices, you can develop each service with a different language and a different database and run it on a different server.
Use continuous integration and continuous delivery
Using CI&CD we can deploy any day any time. We no longer have to wait for nightly builds or Friday deployments, we can at least enjoy our weekends.
Use the latest LTS version of your programming language.
Most programming languages releases new versions every now and then and each release comes with it’s own good.
Ensure your team reviews the latest releases and refactor your code where necessary.
Deploy you application to the cloud unless your business case proves otherwise
Most cloud providers will give you a competitive advantage, they have integrated high end technologies like machine learning, Internet of things, artificial intelligence and managed databases.
Something else that makes cloud solutions standard out is the ability to scale up and down depending on the in and out bound traffic.
Package your application in containers and use orchestration tools to manage the containers
Packaging your application in a container guarantees that it will run in any environment. A container houses all the dependencies your application will require. You can run one or multiple containers in one operating system without dependency collusion.
A system may be deployed in many containers and this brings the need for container orchestration tools. These tools help in managing the communication between the containers. Orchestration tools can also create replicas of a container and help self heal a container in case of damages.
Ensure you are Monitoring and logging the performance of your system.
It is very important to know and understand the metrics of your system. This helps you fix bugs before your customers can identify them or even understand how your users are using the systems and plan for your next version of the system.
Use Control version systems
Control versions keeps a track of changes as you continue to develop your system. It also comes in handy when you have a team working on the same project.
Control versions should be integrated in the build pipelines in your Continuous delivery.