Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Why your company should have a Developer's Kit and how to build one

Why your company should have a Developer's Kit and how to build one

Today modern application can be composed of multiple pieces that is not always easy to fit together. From the majestic monolith to the micro-service based architecture, there is also a good chance you depend on multiple daemons with a pleteora of configuration parameters that needs be defined in harmony so you can run a fully capable development environment.

While some approaches like docker composer may be useful to some users, you are making a tradeoff of performance and convenience, by removing the ability to run things natively. You are also making harder for any more advanced debugging techniques on a lower level of your stack.

In this talk I will show you how you can build a Developer's Toolkit that compromises nothing: performance, convenience still gives you the ability to do system-level debugging, without any docker required.

Gabriel Mazetto

August 16, 2019
Tweet

More Decks by Gabriel Mazetto

Other Decks in Programming

Transcript

  1. 3

  2. I will focus more on the Why and less on

    the How…
 
 But you will learn enough to be able to do it yourself at the end, trust me.
  3. # create your own postgresql data per application mkdir postgres

    initdb --locale=C -E utf-8 postgres/data # run postgresql postgresql -D /path/to/your/postgres/data \ -k /path/to/your/postgres -h 127.0.0.1
  4. # create your own redis server per application mkdir redis

    cd redis && wget https://raw.githubusercontent.com/antirez/redis/5.0/ redis.conf # run redis server redis-server /path/to/redis/redis.conf
  5. .NOTPARALLEL: 
 all: install configure install: echo "Use any shell

    command here." echo "Syntax require we ident with TABs" apt-get install git -y configure: git-config --global user.name "Gabriel Mazetto" git-config --global user.email "[email protected]"
  6. # Local variables git_name: 'Gabriel Mazetto' git_email: '[email protected]' 
 #

    Exported variables RAILS_ENV: 'test'
 
 .NOTPARALLEL: 
 all: install configure install: @echo "Use any shell command here." @echo "Syntax require we ident with TABs" apt-get install git -y configure: git-config --global user.name "${git_name}" git-config --global user.email "${git_email}"
  7. .NOTPARALLEL: 
 all: .git-config .git-config: @echo "this will be executed

    only once, or whenever you remove the file" git-config --global user.name "Gabriel Mazetto" git-config --global user.email "[email protected]" clean: rm .git-config
  8. .NOTPARALLEL: 
 all: .git-config .git-config: @echo "this will be executed

    only once, or whenever you remove the file" git-config --global user.name "Gabriel Mazetto" git-config --global user.email "[email protected]" # make sure clean is not matched to an existing file on disk .PHONY: clean clean: rm .git-config
  9. desc 'Install all dependencies' task :install do puts "Use any

    shell command here." puts "Syntax require we ident with TABs" system "apt-get install git -y" end desc 'Configure everything' task :configure do system 'git-config --global user.name "Gabriel Mazetto" system 'git-config --global user.email "[email protected]"' end task :default => [:install, :configure]
  10. file '.git-config' do system 'git-config --global user.name "Gabriel Mazetto"' end

    directory 'gitlab' do system 'git clone https://gitlab.com/gitlab-org/gitlab-ce .' end task :clone_to, [:path] do system "git clone https://gitlab.com/gitlab-org/gitlab-ce #{@path}" end
  11. # Read the Getting Started here: # https://gitlab.com/gitlab-org/gitlab-development-kit # install

    GDK rubygem gem install gitlab-development-kit # initialize a new contained environment gdk init gitlab # will clone and setup everything cd gitlab && gdk install # to execute GitLab on your local machine gdk run # to regenerate configuration files gdk reconfigure # to update all dependent repositories gdk update