There is a saying stating that "There is more than one way to skin a cat". There is definitely more than one way to develop server-side software applications, including web applications and mobile applications' back-ends.
I work in the Innovation/Research & Development area and part of my job is to build prototypes for new business solutions.
Development of prototypes is different from a "traditional" software development in many ways. In particular:
So, in a nutshell, the challenge of a prototype developer is to collect, retain, and disseminate knowledge.
Some of the points above are applicable to "crowd-built" applications where there is no or a very small group of full-time developers, most people contribute on a part-time basis, and people join and leave the development team relatively often. In this situation knowledge shall be retained in the application, not in the team, and be readily available to new team members, as well as application users.
In the course of building a good deal of prototypes I've assembled a stack of open source technologies (some of which I built myself) that helps me to address the aforementioned challenges.
The goal of this book is to show how to use the stack by building a simple online/mobile banking application. You may ask - "What is so innovative about an online banking application???". First of all this application was chosen because it provides a familiar context - most readers shall be familiar with functionality of web/mobile banking applications and it will help them to focus on how the app is built.
And if you work in a bank you may come up with an innovative idea while reading this book, take the application we build in the book, enhance it, show a working prototype instead of a bunch of PowerPoint slides to your colleagues and maybe it will help to get your idea to production!
The book is organized in several chapters. Each chapter, except the first, builds on the previous, takes some input information, and produces output based on this information. The output includes source code and Docker image(s). The source code is published on GitHub and Docker images are published on DockerHub.
Reasons for choosing a particular technology among the alternatives are explained along the way where applicable.
These are the key principles used in developing a new online banking product/prototype:
highly availableor other quality attributes. This statement does not mean that the application developed in the course of this book will be insecure, faulty or slow. It only means that we will develop functionality first, then apply security, show how to scale the app vertically and horizontally and make it fault tolerant.
Awe will use a tool or a framework which does just
Aand does it good instead of a tool which does the entire alphabet, even if the latter is super-hot. There are two reasons: