Site icon 지락문화예술공작단

NGINX Unit, Three Months In: Progress and Next Steps

NGINX Unit, Three Months In: Progress and Next Steps

Three months ago, we released the first beta version of NGINX Unit, a new dynamic server for web applications. See our initial description of Unit, the announcement blog post, the in-depth demo, and our Unit webinar.

The announcement of Unit became the top story on Hacker News. The code continues to receive attention on GitHub, and Unit’s features and architecture spawned numerous discussion threads on Facebook, Twitter, and other networks. We invite you to download Unit packages or compile it yourself, to try it, and to join the discussion.

To share our progress since the initial beta release, in this blog post, I’ll summarize the last three months of engineering work, then describe our plans for future features and for production readiness.

Unit running multiple application languages and versions

Vision

We at NGINX have known for many years how to connect to the application. Now, with Unit, we help you run it. Modern applications are frequently changing, and they consist of multiple parts. Various services that comprise a distributed application are written in different languages by separate teams. All parts of this mess have to work together for the benefit of end users.

Unit is designed with some key points about modern applications in mind:

Instances of web and app server: In most environments, we see the use of NGINX web server and reverse proxy in front of every application instance. Operations teams choose to implement a web server as an additional layer for consistency, security, and ease of configuration. Now, with Unit, the web server features will be tightly coupled with the application execution runtime. In addition to consistent operation, you’ll see improved performance of the application, with fewer moving parts.

Frequent changes: Today’s infrastructure gives you the ability to make changes easily. You can run cloud virtual machines, containers, and lightweight server workloads, and scale them independently and frequently. Unit has a fresh architecture, it doesn’t reload on changes, and it gives you an easy, dynamic operation model for the application infrastructure. It provides you with the ability to make changes in architecture and in running code as frequently as you need to. All changes are performed without loss of connection or interruption in service.

Multiple stacks: Many application languages and infrastructure stacks create complexity and inconsistency in the operation of a large application. With the ability of Unit to run many application stacks and application versions at the same time, you get operational consistency, stability, and performance across the range of supported languages and language versions. In addition, Unit isolates applications from one another, providing an aspect of security that every production deployment needs.

Service-to-service connectivity: Distributed applications, including microservices applications, inevitably require reliable connectivity across their infrastructure. NGINX has a lot of experience in connecting users to applications, and services to services, within large, distributed environments. One of our goals for future releases is to build the service-to-service proxy features into Unit in order to simplify the operation of your service mesh.

Architectural Approach

Initial Unit plans from the Unit launch blog post

Unit is new software, built from scratch. We didn’t reuse any major part of the existing architecture of NGINX while designing and developing Unit.

In Unit, we decided not to have configuration code compatibility with NGINX for the following reasons:

However, although they’re distinct, Unit and NGINX are parts of the same application platform, and you can use them together, playing different roles within your application environment.

Unit Source Code

Unit is free. The source code is available at http://hg.nginx.org/unit and https://github.com/nginx/unit. It’s open, available under the Apache 2.0 license. You can compile Unit yourself on most popular Linux and Unix systems.

The code repository gives you the most recent view on the progress of the software and provides you with the latest features and updates. However, you should expect frequent changes if you choose to use the latest source for your project. In addition to the raw code, we regularly make versioned packages for most popular operating systems.

Here’s a quick overview of the last three months of development.

Three-month Development Recap

Unit 0.1

The initial beta version of Unit was released on September 7th, 2017, at our annual event, nginx.conf 2017. With the 0.1 version, you can:

Unit 0.1 was intended for initial experimentation, and our most active members of the community took advantage of that. We send thanks to everyone who tried Unit early on and posted questions, bug reports, feature requests, and code modifications in our GitHub repository.

Our initial users tried running Unit with various applications and frameworks, including WordPress, Django, and Grafana, using PHP 5 and PHP 7, Python 2 and Python 3, and Go. It became possible to take existing legacy apps, start them, and configure them in real time.

Watch the in-depth demo of Unit 0.1, featuring system configuration, startup, application loading, and real-time reconfiguration.

Unit 0.2

Version 0.2 was released on October 20, 2017. This second beta version added a number of new features and bug fixes:

Watch the on-demand webinar for unit 0.2 here.

Unit 0.3

The Unit 0.3 beta is scheduled for release in the middle of December. The major changes and new features will include:

Roadmap

We want you to know our plans. It’s an open project, and we share our roadmaps early. Here’s what’s coming in the upcoming release, scheduled to appear in the beginning of 2018:

In the second quarter of 2018 we will fork Unit code into two branches:

We’ll release new packages from the fresh branch every few weeks. These packages will be available for the most popular operating systems, and all installation instructions will be posted at unit.nginx.org.

This versioning system will allow us to focus on the development of new functionality while maintaining high quality code in both branches. This is similar to the versioning used by NGINX.

Later in 2018, we will continue development in the following areas:

Join the development effort on GitHub, contribute to the documentation, and send us feedback about your experiences.

If you wish to make unit a part of your career and your full-time job, join our team: NGINX is hiring C/Unix developers. Check out this page for details: https://www.nginx.com/jobs/

The post NGINX Unit, Three Months In: Progress and Next Steps appeared first on NGINX.

Source: NGINX Unit, Three Months In: Progress and Next Steps

Exit mobile version