Java Blueprint Architecture is a set of documents that fully provide technology solution proposal and deployment architecture models as reference, playing as a “technology consultant” for pre-sale officers in writing proposals and for the technical leaders before carrying out a project.
With the growth of projects and customers in FPT Software, there are more and more requests for building application, from small to large-scale system. Besides, The Information Technology landscape is constantly shifting and evolving. Cloud computing has made a great progress in terms of cost and availability in recent years. The agile movement has brought the principles and practices of continuous integration and delivery to various organizations and given rise to DevOps.
These multidimensional factors have created the way for new architecture called micro services and other style of architecture. It brings a difﬁcult situation for FPT Software, how can we choose the right architecture style for building app and system.
We can divide projects in FPT Software into two types. The ﬁrst one is the project that FPT follows customer’s technology stack, design, so on and so forth. The second one is the type that FPT actively chooses the technology and proposes the architecture style. In this type of project, we have faced many lessons learns: the duplicate of effort for constructing an architecture style, the chosen of not-suitable technology, and the poor design of application. That leads to situation that we need a blueprint architecture with pre-deﬁned components, technology stack for typical projects. This blueprint architecture needs to have scalability, extensibility so that we can apply in many projects.
We would like to develop blueprint architectures in to reduce the effort for creating architecture design, as well as suitable technology selection and the standard architecture.
There are two purposes for building the article: To support presale activities. This is for solution architects, technical architects for technical leaders who are responsible for creating proposal, deﬁning solution for customers. When a request comes to delivery unit, they can have an architecture to refer. It’s very easy for them to copy and paste those in formation into proposal.
To support delivery activities. The technical lead or team leader from delivery unit can use the architecture blueprints and sample code help team to reduce time to study, research and build the code base.
At the very ﬁrst state, we focus on java-based project and open source stuffs. Speciﬁcally, monolithic style architecture and micro service architecture. This reference architecture recites the basic tenets of architecture and analyzes some of the advantages and disadvantages of this approach. We also include the sample application provided with those reference architectures. The network, infrastructure designs are not in the scope of the article. We ﬁrstly focus on software part of system.
In this article, I will highlight two types of standard architecture for java-based technology, they are monolithic architecture and micro service architecture.
Firstly, typical Java Monolithic Architecture will bring a generic view for application architecture. Generally, this design can be applied in many application / systems. In the speciﬁc situation, solution architect can add/remove components and layers depending on customer’s needs. The following diagram is the blueprint architecture:
The ﬁgure above highlights the high-level design of a typical application. The scope of application can be much complex, (I.e. more components, systems to be integrated with), but in the typical view, the application can be divided into following layers, including client layer, web/controller layer, business/service layer and data access layer.
Secondly, the micro service architecture can be described as follow:
Highlights of the design are:
- Using an API gateway to control access to micro services. The API gateway is a policy enforcement point (PEP) that decouples service consumers and API design from the implementation detail of micro services, mediating requests and enforcing trafﬁc management, authentication and authorization policies for external API consumers.
- Adding a Service Router (or a proxy) in front of every service call enables the application of various ﬁlters before and after calls, as well as several common patterns in a micro service architecture.
- Deploying a service discovery framework to decouple micro service interactions. Use a framework that supports distributed consensus 1 to ensure consistency and availability of system state.
- Using client load-balancing features to handle requests among the instances of each micro service.
In general, Java blueprint architecture can help to reduce:
- Effort when creating proposal, choosing technology stack (java based)
- Effort when crafting high level architecture (java based)
- Effort when creating code base for projects (java based)
This tool has been used for pre-sale purposes in some units and received a lot of positive feedback: “The deployment diagram can be 100% re-used, high-leveled technology and architecture are appropriate to help save the effort and signiﬁcantly increase productivity during the proceeding period”.
Specially, Java Blueprint Architecture has been applied in million-dollar projects. Our customer is one of the world’s largest organizations specializing in ﬁnancial services, which is present in more than 70 countries and headquartered in Munich, Germany. building a “digital ﬁnancial product” that have a vision to provide ﬁnancial services, especially micro ﬁnance, through a single click by using digital technology, including micro service, blockchain, big data and AI. In this project, FPT will carry out the entire design and implementation. Thanks to Java Blueprint Architecture, FPT will not have to build everything from scratch. With the help of Java Blueprint Architecture, FPT has successfully deliver the project within 3 months and satisfy customer needs.