Support for Microservices Application Architecture with Release 0.15.0

Yuval Hazaz
Yuval Hazaz
Aug 20, 2022
Support for Microservices Application Architecture with Release 0.15.0Support for Microservices Application Architecture with Release 0.15.0

Amplication Release 0.15.0 offers support for microservices through the introduction of a Project hierarchy.

The Project groups together multiple resources used and created by Amplication, enabling support for multiple use cases. This simplifies the creation of connected Services, and makes it much easier to sync with GitHub across multiple Services.

These developments will be especially welcome if you work at the enterprise-level, but it will enable all developers, individually or in teams, to move into the big-time of microservices architecture.

Amplication is still the same node js app development platform taking the donkeywork out of backend development, but the new workflow means we need to see things differently. In the past we talked about Amplication only as a tool to create the backend for your apps. We still do that, of course, but today we empower you to see and develop on a broader canvas by working with Project hierarchies.

What are Projects, Resources, and Services?

Starting with Release 0.15.0, Projects, Resources, and Services are key concepts that drive Amplication’s workflow.

Project

A Project is a hierarchy within Amplication that groups together multiple resources.

project-structure.png

The project hierarchy supports use cases that are relevant to building a microservices architecture, with or without a monorepo.

As a first step, Amplication 0.15.0 includes the following resources:

  • Project configuration (default)
  • Services

Resource

A resource is any of the elements that go into creating a project with Amplication, such as Project Configuration and Service.

In future releases we will introduce many more types of resources. This is where the Project concept will really come into its own - by supporting the generation of a full microservices architecture including message brokers, storage, API gateways, and more.

Service

A service is the output generated by Amplication.

We used to call this output an app, but this implies that it is an application installed by the user. Services do not necessarily require user involvement, and so better describes the situation when each Service is one element in a solution.

Instantly generate
production-ready backend
Never waste time on repetitive coding again.
Try Now

How does Amplication's project hierarchy make your life easier?

In addition to the the ease of creating multiple connected services, Projects make your life easier by providing the following functionality:

  • Connecting to a single Git repo at the Project level. This will save you a lot of time when configuring a big project with many services, as you won’t need to connect each service manually. But rest assured - you remain in control, with the ability to override the settings at the Service level if you want to connect a specific Service or all Services to different repositories.
  • A single commit at the Project level. This will manage changes across different services in the project, generate the code for all services, and get a PR for each.

How has the Amplication interface changed?

As you would expect, we have revamped the Amplication interface to support the new Project hierarchy and Service creation workflows. Here is a brief look at some of the changes.

Go to a Workspace and select a Project from the list (or add a new Project).

Untitled

Click the Project Configuration banner and use the Project Configuration dashboard to configure your project.

Untitled

Then, from the workspace, select New Service and configure the settings on the new Amplication Service Creation Wizard. This new feature simplifies the process of building a Service.

Untitled

Click Create Service and use the Service dashboard to configure your Service.

Untitled

The service you have just created is added to your Project.

Untitled

To view code or commit on the project level, select from the Resource List at the top of the screen.

What happens to existing apps?

If you have apps that were created in a previous Amplication release, each app will be wrapped into a new project, with the app presented as a Service in the Project.

Updates to Prisma, Lerna, and other packages

As we worked on Release 0.15.0, we performed the usual chore tasks to make sure the internals of our codebase are up to date and functioning properly.

Most noticeably:

  • A new @amplication/nest-logger-module package used for logging.
  • Updated Prisma to version 5.4.3.
  • Enabled Nx in Lerna. In the future, we plan to perform a full Nx migration.

If you want to dig deeper, check out the GitHub Release Changelog.