Building scalable software is more than just writing some code and deploying it on a server. Good software development means your engineer knows the business and foresees future needs. Quality development often takes more time, but it will save you money in the long-run. If you're a CTO in charge of a development team or a business owner who needs to hire developers, understanding the three tiers of software engineering will help you make the right decisions for your application.
An Overview of Software Layers
Basic software projects with a low budget are usually thrown together without any forethought on scalability. This can be a problem for a business that succeeds and grows. Software layers separate your business logic, user interface (UI) and the database. The benefit is that each layer can be modular. For instance, if you change your database engine, theoretically you can integrate a new database without changing the UI and business logic. It usually doesn't work as easily as the theory suggests, but maintaining separate layers does help with future scalability.
Software layers also let you make changes more quickly with fewer bugs. You can have your business logic developer make a change without changing any of the data layer's code. Of course, you should still test the software, but chances of introducing a bug to other layers are reduced when you limit the amount of code that changes during an upgrade.
The Business Layer
The business layer has all the nuances of your business logic. For instance, if you run an ecommerce website, the business logic includes rules for returns, the number of characters required for a password, and what happens when the user abandons a shopping cart. Each business has different business logic to deal with these situations.
When you view documentation for a project, the logic layer is graphically displayed as the tier that sits between the UI and the database layers. The logic layer gets its data from the database layer, manipulates it, and packages it as a data set that is returned to the UI. The theory is that any changes to the business layer should be completely invisible to the other layers. For instance, if you make changes to rules for returns in your logic layer, the changes should not affect the UI and database layers.
The Database Layer
The database layer handles your data. The database can be any platform including MySQL, Microsoft SQL Server or Oracle. This layer is usually much more complex, because it needs to connect to your database and handle data without causing bugs.
Some developers separate their database tier in an API. The business layer calls an API that handles data management. This is often used when the business has multiple database platforms. For instance, you could use Oracle as a main business intelligence platform but use MongoDB as the real-time database engine. The API would have its own logic and interface for the business logic layer, and this would increase the number of layers in your application. The process sounds complex, but it's a completely efficient way to ensure scalability.
The UI or Presentation Layer
The UI is the part of the application the user sees. Usually, a good UI artist is used for the front-end development. The UI contains all of the HTML, images, CSS, JavaScript and any other views displayed in the browser. If your application is desktop software, the UI includes the screens that take input from the user.
The presentation layer is the "pretty" layer, and it's the focus for the marketing department. If the UI is too difficult to navigate, you lose users. The UI developer works heavily with the marketing department to ensure that usability and sales copy keep users interested in the application. This is true for a desktop or web application.
Why is This Important to Business Owners?
For the most part, developers worry about the technicalities involved with a tiered software development project. However, business owners are usually turned off by the idea of higher prices for a development budget.
Creating a tiered application takes more time and money initially, but poor development design can be very costly in the future. What happens when you want to add an internal CRM to manage website clients? With tiered software, the developers can add a solution with its own business layer and UI and use the database logic from your website. The result is a modular application that spans your entire enterprise.