Skip to content

Implement RFC 0007 - Web Server Re-architecture #128

@ForestEckhardt

Description

@ForestEckhardt

Web Server Re-architecture

Describe the Enhancement

RFC 0007 has been accepted and merged. This is a tracking issue for implementing this work.

Step 1 - Development backwards compatibility

In order to allow for the development of new buildpacks such as <web-server>-zero-configuration and <web-server>-start we will need a buildpack that can provide the web-server in question without doing any other configuration. In order to achieve this I propose the nginx and httpd buildpacks each respectively utilize a new provision nginx-development and httpd-development or'd to the existing buildpack. The new buildpacks will be able to require the development provisions and when the <web-server> buildpack detects that a development provision was required it can modify it's build process to only provide the <web-server> dependency. This will also have the advantage of isolating the provision steps in build which will be useful when those parts are the only ones that will be needed in the buildpack going forward. This API will allow the buildpack to continue to function as it normally would but allow buildpacks to be developed using the future expected behavior.

Step 2 - Develop new buildpacks

The new buildpacks that cover existing functionality in the <web-server> buildpacks such as zero configuration and writing start commands are being exported to new buildpacks. These need to be written and tested in the same way that they are in the current <web-server> buildpacks.

Nginx

HTTPD

Step 3 - Convert existing buildpacks and update API

Once the new buildpacks are developed the existing <web-server> buildpacks can be converted into their new role and dependency providing buildpacks. The development API can also be removed at this stage and the developed buildpacks can swap over.

Nginx

HTTPD

Motivation

This will make the web-server buildpacks more similar to existing buildpack ecosystems and will make the dependencies easier to utilize by other buildpack families.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    ❓Not scoped

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions