All Projects → metaparticle-io → Package

metaparticle-io / Package

Licence: mit
Metaparticle/Package: Language Fluent Containerization and Deployment in Java, .NET and Javascript (and more coming soon)

Programming Languages

javascript
184084 projects - #8 most used programming language
java
68154 projects - #9 most used programming language
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Package

Dotnet Istanbul Microservices Demo
This is the demo application that i created for my talk 'Microservice Architecture & Implementation with Asp.Net Core' at Dotnet İstanbul Meetup Group.
Stars: ✭ 109 (-77.89%)
Mutual labels:  dotnet-core, distributed-systems
Minecase
Minecraft server based on Orleans
Stars: ✭ 581 (+17.85%)
Mutual labels:  dotnet-core, distributed-systems
Orleans.clustering.kubernetes
Orleans Membership provider for Kubernetes
Stars: ✭ 140 (-71.6%)
Mutual labels:  dotnet-core, distributed-systems
Awesome Microservices Netcore
💎 A collection of awesome training series, articles, videos, books, courses, sample projects, and tools for Microservices in .NET Core
Stars: ✭ 865 (+75.46%)
Mutual labels:  dotnet-core, distributed-systems
Gofer.net
Easy C# API for Distributed Background Tasks/Jobs for .NET Core.
Stars: ✭ 383 (-22.31%)
Mutual labels:  dotnet-core, distributed-systems
Elasticell
Elastic Key-Value Storage With Strong Consistency and Reliability
Stars: ✭ 453 (-8.11%)
Mutual labels:  distributed-systems
Nsq
A realtime distributed messaging platform (forked from https://github.com/nsqio/nsq)
Stars: ✭ 476 (-3.45%)
Mutual labels:  distributed-systems
Ergo
The management of multiple apps running over different ports made easy
Stars: ✭ 452 (-8.32%)
Mutual labels:  distributed-systems
Xgboost
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow
Stars: ✭ 22,017 (+4365.92%)
Mutual labels:  distributed-systems
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (-2.23%)
Mutual labels:  distributed-systems
Csharp Driver
DataStax C# Driver for Apache Cassandra
Stars: ✭ 477 (-3.25%)
Mutual labels:  dotnet-core
Pysyncobj
A library for replicating your python class between multiple servers, based on raft protocol
Stars: ✭ 468 (-5.07%)
Mutual labels:  distributed-systems
Hazelcast
Open-source distributed computation and storage platform
Stars: ✭ 4,662 (+845.64%)
Mutual labels:  distributed-systems
Netfabric.hyperlinq
High performance LINQ implementation with minimal heap allocations. Supports enumerables, async enumerables, arrays and Span<T>.
Stars: ✭ 479 (-2.84%)
Mutual labels:  dotnet-core
Dnpipes
Distributed Named Pipes
Stars: ✭ 452 (-8.32%)
Mutual labels:  distributed-systems
Rockpaperscissorslizardspock
Rock, Paper, Scissors, Lizard, Spock - Sample Application
Stars: ✭ 477 (-3.25%)
Mutual labels:  dotnet-core
Cnblogs
一些我在平时工作和学习中积累的编程相关的资源。如果大家有兴趣可以一起增加,修改。
Stars: ✭ 452 (-8.32%)
Mutual labels:  programmer
Gaia
Build powerful pipelines in any programming language.
Stars: ✭ 4,534 (+819.68%)
Mutual labels:  distributed-systems
Dotnet Serve
Simple command-line HTTPS server for the .NET Core CLI
Stars: ✭ 481 (-2.43%)
Mutual labels:  dotnet-core
Jsonapidotnetcore
JSON:API Framework for ASP.NET Core
Stars: ✭ 465 (-5.68%)
Mutual labels:  dotnet-core

Metaparticle/Package

Language Idiomatic bindings for building Container Images.

What's this about?

Containers are an optimal way to package and deploy your code. However, teaching developers to learn a new configuration file format, and toolchain, just to package their application in a container is an unnecessary barrier to entry for many programmers just starting out with containers.

Metaparticle/Package simplifies the task of building and deploying container images. Metaparticle/Package is a collection of libraries that enable programmers to build and deploy containers using code that feels familiar to them.

Rather than learn a new set of tools, syntaxes or workflows. The package libraries aim to use language level features to add new capabilities to existing programming languages.

Can you give me an example?

Here's a simple example of building a containerized Java application:

import io.metaparticle.annotations.Package;
import static io.metaparticle.Metaparticle.Containerize;

public class Main {
    @Package(repository="brendanburns",
             jarFile="path/to/my-fat-jar.jar")
    public static void main(String[] args) {
        Containerize(() -> {
            System.out.println("Hello Metaparticle/Package");
        });
    }
}

When you run this program via the java command or your IDE, rather than simply executing your code, this program packages up the Java code in a container, and runs that container.

What languages do you support?

Currently:

But it's fairly straightforward to add other languages, we would love to see contributions.

Details

For more details see the more complete walkthroughs for each language:

Operation

When you link the metaparticle package library into your application, it intercepts and overwrites the main program entry point. This interception performs the following pseudo code:

func main(args []string) {
    if runningInDockerContainer {
        executeOriginalMain(args)
    } else {
        buildDockerImage()
        pushDockerImage()
        if deployRequested {
            deployDockerImage()
        }
    }
}

The net effect of this is that a developer can containerize, distribute and optionally deploy their application without ever leaving the syntax or confines of their development environment and language of choice.

At the same time, metaparticle is not intended to be a platform. Under the hood, the libraries still write Dockerfiles and make calls to the same build and push code. So when a developer wants or needs to switch to the complete container tooling, they can easily take their application with them.

In addition to basic packaging and deployment, metaparticle can also implement more complex distributed system patterns via language fluent semantics.

Contribute

There are many ways to contribute to Metaparticle

  • Submit bugs and help us verify fixes as they are checked in.
  • Review the source code changes.
  • Engage with other Metaparticle users and developers on gitter.
  • Join the #metaparticle discussion on Twitter.
  • Contribute bug fixes.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].