Coder Social home page Coder Social logo

benchmarks's Introduction

Join our Telegramm group

Javadoc License codecov Hits-of-Code Docker Pulls Docker Image Version (latest by date)

Artipie is a binary artifact management tool, similar to Artifactory, Nexus, Archiva, ProGet, and many others. The following set of features makes Artipie unique among all others:

Learn more about Artipie in our Wiki.

Publications about Artipie:

Quickstart

Artipie is distributed as Docker container and as fat jar. The jar file can be downloaded on the GitHub release page and here is a Wiki page describing how to start it. The fastest way to start Artipie is by using Docker container. First, make sure you have already installed Docker Engine. Then, open command line and instruct Docker Engine to run Artipie container:

docker run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest

It'll start a new Docker container with latest Artipie version, the command includes mapping of two ports: on port 8080 repositories are served and on port 8086 Artipie Rest API and Swagger documentation is provided. A new image generate default configuration, prints a list of running repositories, test credentials and a link to the Swagger documentation to console. To check existing repositories using Artipie Rest API:

  • go to Swagger documentation page http://localhost:8086/api/index.html, choose "Auth token" in "Select a definition" list,
  • generate and copy authentication token for user artipie/artipie,
  • switch to "Repositories" definition, press "Authorize" button and paste the token
  • then perform GET /api/v1/repository/list request. Response should be a json list with three default repositories:
[
  "my-bin",
  "my-docker",
  "my-maven"
]

Artipie server side (repositories) is served on 8080 port and is available on URI http://localhost:8080/{reponame}, where {reponame} is the name of the repository. Let's put some text data into binary repository:

curl -X PUT -d 'Hello world!' http://localhost:8080/my-bin/test.txt

With this request we added file test.txt containing text "Hello world!" into repository. Let's check it's really there:

curl -X GET http://localhost:8080/my-bin/test.txt

"Hello world!" should be printed in console.

To dive in deeper into Artipie configuration, features, explore repositories and storages settings, please, address our Wiki.

Default server configuration in Docker Container refers to /var/artipie/repo to look up for repository configurations. You may want to mount local configurations <your-local-config-dir> to /var/artipie/repo to check and edit it manually.

Important: for provided Artipie docker containers <your-local-config-dir> should have directory ownership set to 2021:2020. To change it correctly use sudo chown -R 2021:2020 <your-local-config-dir>.

If you have any question or suggestions, do not hesitate to create an issue or contact us in Telegram.
Artipie roadmap.

How to contribute

Fork repository, make changes, send us a pull request. We will review your changes and apply them to the master branch shortly, provided they don't violate our quality standards. To avoid frustration, before sending us your pull request please run full Maven build:

$ mvn clean install

To avoid build errors use Maven 3.2+ and please read contributing rules.

Thanks to FreePik for the logo.

How to release

Artipie service is released in several formats:

All these distributions are created by GitHub workflows. To publish release, push tag starting with v into this repository masted branch:

git tag v1.2.0
git push --tags origin

benchmarks's People

Contributors

brastak avatar chgen avatar g4s8 avatar genryxy avatar kirill-h5i avatar olegmoz avatar olenagerasimova avatar sammers21 avatar swizbiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

benchmarks's Issues

Compare performance of Artipie and Spring

It is necessary to develop benchmarks for comparison performance of Artipie simple server VS SpringBoot simple server. Artipie simple server uses FilesSlices inside.
There are different scenarios for benchmarks in this repository which were developed before. Some of these scenarios could be used as data for comparison. The next operations should be covered by benchmarks: uploading new files of different size with different number of active connections and the same for downloading.
As a tool for benchmarks JMeter could be used.

Benchmarks

Implement benchmarks tool set for Artipie repositories. Let's start with NPM registry.
These options has to be configured:

  • amount of download requests per time unit
  • amount of upload requests per time unit
  • TBD?

Grafana metrics endpoint access

Grafana container for performance tests has /metrics endpoint which should be secured too or disabled. E.g. http://central.artipie.com:3000/metrics

GitHub Action for running performance test

Prepare GitHub Action for running performance tests automatically on every new git tag push.

  • Register action runner on our private Linux VM
  • push JMeter json results to special git branch. Store results as separate directory for every tested git tag.

Performance testing support

Performance testing support for maven and files artipie adapters.

  • Internal performance monitoring hardware setup for stable measurements
  • Scripts to prepare artipie instance for testing
  • Scripts to run upload & download tests for files adapter
  • Scripts to run upload & download tests for maven adapter
  • Scripts and provided tests must be documented.

Action worth to be improved

Since it is wanted to run all the benchmarks per one GitHub actions run, the amount of action inputs can be dramatically improved.

Create a script to run benhmarks on AWS

Create a script to:

  1. Start multiple EC2 instances with required configuration
  2. Deploy benchmarks targets to these instances
  3. Run benchmarks
  4. Download reports
  5. Destroy EC2 instances

Instances should be started in same region in one AWS subnet. We should use only instances ehich supports ENA:
https://aws.amazon.com/about-aws/whats-new/2016/06/introducing-elastic-network-adapter-ena-the-next-generation-network-interface-for-ec2-instances/
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking-ena.html

I think Terraform is suitable for this, but feel free to discuss alternatives.

Configurable maven test data generator

Configurable maven test data generator must create test repository data for maven-adapter performance testing. Generator must have following configurable parameters (preliminary):

  • Artifacts count
  • Artifact versions count
  • Big, medium and small-sized configurable jar sizes
  • Percentage of big/medium/small artifacts

README.md file is a mess and hard to understand

README.md file contains a lot of information which not seems to be placed in the correct place. The readme should describe what the repository is about. There is no even a mention that it is a GitHub action.

Update source data for benchmarks

There are some problems with uploaded data because some of archives contain extra files or have extra subfolder. Upload source archives in one format

Monitoring support for artipie instance.

Monitoring support for artipie instance.

  • central.artipie.com must provide Web UI for monitoring dashboards, with basic authentication support.
  • Target artipie instance must be set on the internal hardware setup for Performance testing support.
  • Metrics data must be pushed automatically and provided to Web UI dashboards in real time.
  • Basic scripts must be documented.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.