azk is open source software (Apache 2.0) and will always be.
azk is agnostic and has a very soft learning curve. Keep using the exact same development tools you already use.
It only takes a few commands. Minutes instead of hours or days.
azk does its magic by executing very short and simple recipe files (Azkfile.js) that describe the environments to be installed and configured.
Reuse an entire Azkfile.js or just parts of it. Add new components or create new ones from scratch. Customize everything according to your requisites.
It’s as easy as editing a text file.
azk is fast and your machine will barely feel it.
It uses containers instead of virtual machines. Containers are like virtual machines, only with better performance and lower consumption of physical resources.
azk is built with Docker, the best open source engine for managing containers.
Sharing an Azkfile.js assures total parity among development environments in different programmers' machines and reduces the chances of bugs during deployment.
Not sure if all the programmers in your team are using the updated version of the development environment? Just give them the latest Azkfile.js. With azk, you can kill and restart entire development environments in seconds (literally).
Add elements that compose your system and describe depedencies among them.
Specify requisites for running your system.
Tell how and where we must run your system.
Give your system an URL and set the inital number of its instances.
Add configuration parameters.
Define persistent mounting points.
Map, name and tipify (udp/tcp) the ports you want to use.
Export variables to child systems.
// azk 0.9.0
systems({
'web': {
depends: ["database"],
image: { docker: "azukiapp/node" },
provision: [
"npm install",
],
command: "npm start",
workdir: "/azk/#{manifest.dir}",
mounts: {
"/azk/#{manifest.dir}": path('.'),
},
scalable: { default: 3 },
http: {
domains: [ "#{system.name}.#{azk.default_domain}" ],
},
envs: {
NODE_ENV: "dev",
},
},
database: {
image: { docker: "redis" },
mounts: { "/data": persistent("data") },
ports: {
data: "6379/tcp",
},
export_envs: {
REDIS_URL: "redis://#{net.host}:#{net.port.data}/database",
},
}
});
// azk 0.9.0
// Add elements that compose your system and describe depedencies among them.
systems({
'web': {
depends: ["database"],
// Specify requisites for running your system.
image: { docker: "azukiapp/node" },
provision: [
"npm install",
],
// Tell how and where we must run your system.
command: "npm start",
workdir: "/azk/#{manifest.dir}",
mounts: {
"/azk/#{manifest.dir}": path("."),
},
// Give your system an URL and set the inital number of its instances.
scalable: { default: 3 },
http: {
domains: [ "#{system.name}.#{azk.default_domain}" ],
},
// Add configuration parameters.
envs: {
NODE_ENV: "dev",
},
},
database: {
image: { docker: "redis" },
// Define persistent mounting points.
mounts: { "/data": persistent("data") },
// Map, name and tipify (udp/tcp) the ports you want to use.
ports: {
data: "6379/tcp",
}
// Export variables to child systems
export_envs: {
REDIS_URL: "redis://#{net.host}:#{net.port.data}/database",
},
}
});
// azk 0.9.0
// Add elements that compose your system and
// describe depedencies among them.
systems({
'web': {
depends: ["database"],
// Specify requisites for running your system.
image: { docker: "azukiapp/node" },
provision: [
"npm install",
],
// Tell how and where we must run your system.
command: "npm start",
workdir: "/azk/#{manifest.dir}",
mounts: {
"/azk/#{manifest.dir}": path("."),
},
// Give your system an URL and set the inital
// number of its instances.
scalable: { default: 3 },
http: {
domains:
[ "#{system.name}.#{azk.default_domain}" ],
},
// Add configuration parameters.
envs: {
NODE_ENV: "dev",
},
},
database: {
image: { docker: "redis" },
// Define persistent mounting points.
mounts: { "/data": persistent("data") },
// Map, name and tipify (udp/tcp) the ports
// you want to use.
ports: {
data: "6379/tcp",
}
// Export variables to child systems
export_envs: {
REDIS_URL:
"redis://#{net.host}:#{net.port.data}",
},
}
});
Get the right Azkfile.js and azk does the rest. Your development environment will be ready to roll in a few moments. Create an Azkfile.js from scratch, edit an existing one or even tell azk to write you one based on your requirements or existing code.
You are a coder. All you should have to do is to code. ;)
Use azk to automate the installation and orchestration workflow of development environments for your team. You’ll also be able to maintain uniformity across those environments with no effort. Finally, the way azk builds environments makes it super easy to keep track of their evolving versions.
You’ll be your dev team’s hero. 8)
(Soon). With the graphical user interface module, every project stakeholder that has to run code in development for any reason will be able to do so, even if they can’t program or install a development environment by themselves.
It doesn’t matter what kind of tests or checks you have to perform (UX, design, QA, product management etc.). With the project’s Azkfile.js you can install everything (including the project code itself) with literally just a few clicks.
You’ll always be empowered. \o/
Parity across instances of a project’s development environment within a team with several developers is a fundamental principle in modern web software development. azk makes that possible in an elegant and easy-to-use way.
Luis Cipriani @lfcipriani
Developer advocate
Twitter
Maybe every project in GitHub should have its own Azkfile.js in order to make its code absolutely ready to run instantly.
Vinícius Baggio @vinibaggio
Software Engineer
Medium
azk reduces the entry barrier for beginner developers and catalyses the introduction of new professionals to the marketplace. In that sense, what azk does for environments orchestration looks a lot like what Ruby on Rails did for web development. azk may turn into a relevant tool for programming education everywhere.
Currently available tools for maintaining development environments are very time and effort consuming. azk makes everything a snap and hides away the tough parts of this process (while keeping it transparent enough so that we’re always aware and in control of what’s going on underneath). It’s like azk came from the future.
Quickly integrating new developers into the team or relocating them to different projects are some of the things azk allows me to consider as the CTO of a rapidly growing startup. By the way, azk is open source (and thus 100% free)!
Carlos Brando @carlosbrando
CTO
Enjoei