Software Development demands a platform
"Boat in Body of Water". All images in this post from pexels.com

Software Development demands a platform

Deploy automation is a great facility. It saves us doing lots of boring steps, re-work, and avoids the “but it works in my machine” dilemma. And that helps to go fast in the development life cycle, continuous delivery, and get feedback accordingly. A deployment platform is a big plus for devs and teams of all sizes. 

Docker is a great tool for doing deploy automation and in this post, I will introduce you to an alternative that developers love because is a "Heroku like" experience for deployment apps, with the possibility to use a "git push" command to send changes to the server. 

Docker is used typically in these scenarios: packaging and deployment automation, creation of PAAS environments, testing/continuous integration, and scaling applications and backend services.

No alt text provided for this image


I will resume how you can accomplish a basic platform, covering the first two scenarios with an easy alternative to achieving it using one of the most valuable tools that you can find in the ocean of current DevOps tools: Dokku.

No alt text provided for this image

Dokku

Dokku is described in his web site as “ a docker-powered PaaS”. Dokku is a single instance and open-source platform for deploy web apps. Basically, dokku builds for you a Docker image based in different context image definitions (URL's) using the docker build command. Additionally, you can connect the result container with a database through docker container linking. 

Database creation is doing in dokku with his plugin facility, the definition in the web site: “In essence, a plugin is a collection of scripts that will be run based on naming convention.” So dokku use plugins to install additional resources that the app could need and do it through scripts that are executed in the container. Some resources examples are databases, queue services like RabbitMQ, Redis, HTTP Auth, and many others.  

With these features you can build a container doing something like this:

dokku buildpacks:add appname https://github.com/heroku/heroku-buildpack-nodejs.git

Or add a resource:

dokku plugin:install https://github.com/dokku/dokku-postgres.git 

And of course, after linking resources and add the git repository to dokku server, you can deploy with ease:

git push dokku master

The installation steps and details can be consulted in these guides there are straightforward and was tested in production environments:


Beyond scenarios.

Continuous integration and deployment scenario need the configuration of a CI server like Jenkins and is a natural step to yield the deploy management responsibilities to automation. Here you can find a guide to configure this approach with Jenkins.

Scaling on the other hand is a scenario that in dokku could be problematic because dokku is a single server deploy solution. However, we can learn from other experiences enabling multiserver when is needed scaling horizontally the solution as this article exposes

I hope that this post gives an idea of build basic PaaS, we can beneficiate from DevOps practices even if we work for small projects, MVP, or specific jobs. A basic setup can be growth up if needed and your projects will be prepared to deal with a more refined DevOps flow.

要查看或添加评论,请登录

Rafael Carrascal的更多文章

社区洞察

其他会员也浏览了