Originally I shared this story to Syndicode blog, and now I'm making a summary with small additions.
When we start web development, there are not just steps we follow from the discovery session and wireframes to release and support. Behind all these stages we have a bunch of important decisions (hard decisions!) to take.
Here I will set 5 examples of important questions we (me and the company I work in) go through every time we start a project.
1. Web development architecture
Starting from the collection of requirements, we decide on websites or web application architecture that fits the product’s purpose best.
There are 3 main types of web application architecture nowadays:
- SPA (single page applications) – a few required elements that are needed by the user right here right now. SPA principles based on dynamically rewriting the current page rather than loading entire new pages from a server.
- Microservices – is a great option to develop various components using different coding languages. Microservices fits large-scale applications which different features and integrations. Microservices architecture allows us to be more flexible in choosing technologies and faster in rolling out web applications. Additionally, Microservices architecture is a good option when it comes to the product’s migration.
As Wiki says, the benefit of decomposing an application into different smaller services is that it improves modularity. This makes the application easier to understand, develop, test, and become more resilient to architecture erosion. It allows parallel development by enabling small autonomous teams to develop, deploy and scale their respective services independently. It also allows the architecture of an individual service to emerge through continuous refactoring. Microservice-based architectures facilitate continuous delivery and deployment. - Serverless architecture – (aka ‘serverless computing’ or ‘function as a service, FaaS’) is a software design pattern where applications are hosted by a third-party service (like AWS or Google Cloud) eliminating the need for server software and hardware management by the developer. Applications are broken up into individual functions that can be invoked and scaled individually. This type of architecture allows us to concentrate on coding rather than on building and managing infrastructure (as it already exists).
At this point, while choosing the proper architecture, you have also to think about the benefits of parallel development, independent deployment, and continuous refactoring.
2. How to achieve scalability?
To achieve scalability with minimal effort and easily change the technology stack if needed you might consider:
- vertical and horizontal scaling to handle increased loads without increasing response times;
- load balancing and resource utilization to improve web products’ scalability.
3. Databases?
All of the web products you develop (websites and web applications) should be able to store and retrieve data accurately, reliably, and quickly. That’s why we use only reliable and battle-tested databases such as:
- PostgreSQL,
- MongoDB,
- Elasticsearch,
- Redis,
- Mysql
These are the TOP-5 databases widely used by web development companies. Their choice correlates with system design and user demands.
4. Infrastructure?
To provision and manage server infrastructure and deploy the application code you should engage a dedicated DevOps specialist. This person is responsible for modern, secure, reliable and scalable infrastructure.
The two main responsibilities DevOps has are:
- setting secure access configurations,
- сonfiguring backups to restore the vital data in case of force majeure.
5. Web design?
The earlier you decide on web design - the better. Web design involves:
- Information Architecture,
- website structure,
- user interface,
- navigation ergonomics,
- website layouts,
- colors,
- contrasts,
- fonts and photography,
- illustrations,
- icons design.
A design specialist applies UX and UI skills to a web page design. Originally, a web designer is a UI designer (a subset of UI designers) focused on the design and building a web user interface. Some of them might know a bit of frontend programming such as HTML/CSS, Javascript to show how the design/prototype would work on screen. Also, they should know more about technical restrictions on the web, grids and so on.
Keeping that all in mind will be very very helpful in creating quality, beautiful and safe web products.
Also, there are the latest web design and web development trends for 2019.
Thank you for reading!