Skip to content

Serverfree object-oriented microservice architecture for Crystal.

Notifications You must be signed in to change notification settings

abstractive/artillery.cr

Repository files navigation

artillery.cr

GitHub release

Work In Progress

This implementation of Artillery is the reference implementation for the other languages at present, until another language or language platform can out-perform Crystal in the wild. Crystal feels perfect as the language to start from because it's almost designed for writing microservices.

Ignore Documentation

All information about this exists in Issues and code itself primarily, by way of implication; as well as in delimiter chambers discussions. Reach out if you have questions or want to contribute.


Preparation

  1. Add the dependency to your shard.yml:

    dependencies:
      artillery:
        github: abstractive/artillery.cr
  2. Run shards install

  3. If not running containerized: Setup ZeroMQ

Invokation

Artillery can be invoked several ways; here are three:

Local environment, using the nimble but effective Bazooka style { Working }

From within a clone of a projectile repository you want to activate run this commands:

$ bin/artillery --bazooka

Cloud deployment of a Mountpoint and several Launcher instances [ Pending ]

In artillery.yml, include the following:

projectile:
  environment:
    production:
      domains:
        - artillery.cloud
      launchers: 3
    development:
      launchers: 3

Then, run the following in the root of the repository, wherever it is checked out:

$ sudo artillery

Local deployment of a Mountpoint and several Launcher instances [ Pending ]

In artillery.yml, include the following:

projectile:
  environment:
    development:
      launchers: 3

Then, run the following in the root directory of your local environment:

$ sudo artillery development

Other configurations:

More details coming...

Pending Invokations:

Right now the Docker cluster configurations are broken, but it is mostly there. Once resolved, the remaining invokation styles will be available quickly thereafter, and will provide reduncancy, load-balancing, etc. The Bazooka demonstrates the concept, then down the line it will remain as the primary means of doing local development using the exact infrastructure Shot instances are deployed to in public.


Currently and foreseeably MIT licensed, because if you want code without people, and you want to run off with the benefit of community work, good riddance anyway. I guess that's one version of decentrality. Most people are just busy and trying to get ahead. So do what you're going to do, and if you've got too much going on to contribute, you're probably making a contribution to the world some other way. But don't be a stranger. This code is intended to bring people together and raise the bar.


Developed by digitalextremist // in partnership with abstractive labs, facilitated by delimiter chambers.