3

This is a general question, but couldn't find a better place to ask. I'm a new DevOps member in a company, and I've been ask to "update" our DevOps technologies.

Generally speaking, in what areas do we need to provide tools, and what are some latest and advanced technologies/tools to do that?

For instance, we need container management (e.g. docker, kubernetes), log analysis (e.g. ELK Stack), Application monitoring (e.g. JMX), Weblogic, database management, Jenkins, etc.?

What else, and what tools? Which processes are probably needed to be automated? It can be anything. I just need some advice.

  • Hi Tina, this is indeed quite generic question. I would suggest two things. First, to split this question into specific areas describing parts of your stack and ask for best practices for automation in that specific area, based on what you have. Second, I think you might need to suggest to your manager that you need someone experienced to consult your current state of architecture with, get them to pay someone (internal or external) for a week of advice or so, then you'd have some specific points that you could work on for the next few months. – Jiri Klouda Sep 18 '18 at 22:42
  • 2
    One more suggestion, articles on internet on best practices are often marketing content written by specific vendors to push their product. Unless an article discusses multiple solutions by multiple vendors with unclear winner and case based suggestions where in different case different vendor is a recommendation, then I think you might be quite sure you are reading a marketing document. – Jiri Klouda Sep 18 '18 at 22:45
  • I get the splitting the question part. But I hope I can get some best practices and names here. – Tina J Sep 18 '18 at 22:47
  • 1
    You might, but this is simply something that is best discussed in a specific case on a whiteboard. Often the things to do depend also on what resources are available to your team, what skills you have, what kind of advice you can get in the company, what other people know or are familiar with. It does not matter if one tool is slightly better than the other if you'd struggle with one and have easier work with the other based for example on the programming language the tool uses for modules. – Jiri Klouda Sep 18 '18 at 22:55
5

Alright... you're not going to implement every tool or automation at the same time, as some of them have quite deep impact on your development processes (and I daresay, development culture). Take a step-by-step approach; research each individual tool. Figure out what it actually does, what it is useful for. Play around with them, install them locally, go through tutorials, and see what they do, or whip up a quick VM somewhere (AWS, etc.) if you need more than one.

Then, take a look at the work your team/company is doing right now. What are the manual process you wish to automate? Ideas should spring up pretty quickly.

A nice, simple(-ish), bog-standard stack to start out with:

  • Vagrant to automate setting up VMs for your developers, or test environments.
  • Ansible to automate configuration management (relatively lightweight compared with Chef or Puppet)
  • Gitlab or Jenkins as your automated CI/CD driver, mostly depending on taste
  • Docker for your containers
  • docker-compose, docker-swarm, Kubernetes, OpenShift to automate container deployment
  • ELK or Splunk for your logging/monitoring, again depending on taste

Have fun!

4

Hi and welcome to DevOps SE!

While DevOps is not self-purposed, maybe it is worth to step back for a moment to find out the actual problem before trying out solution.

As you have asked a more or less generic question, I'll give you sort of a "DevOps primer" stick more to methodology rather than give you a list of tools.

How detailed you would tailor the implementation of this depends on many factors like business needs, complexity of teams, products and systems. .. and the time you have got/are allowed to think.

  • Why did they ask you to update DevOps techologies?
  • What is the business objective i.e. what will change after you are done - find out the management perspective. Will be software delivered faster/in shorter periods, or are deployment problems a real issue?
  • If there is an update of DevOps technologies, what is the current DevOps toolchain (please read on this Wikipedia article to understand families of tools by their purpose in the toolchain) your colleagues use?

  • Who i.e. which team members have knowledge/daily usage of which of these tools?

  • What are technically software products your manufacture and deliver?

Now you know the problems and the existing toolchain and products it produces:

  • Are there now some quick fixes to achieve quick results or do you need more time to analyze data you have now, and find answers to questions you have to the team and management?
  • Which tools do you think are missing and how which change would bring the company closer to the set objective?
  • Will be free open source tools enough or some enterprise licenses could be required?
  • Is it possible to design a DevOps strategy and generate iterative tasks to deliver changes and improve the situation in baby steps (design thinking with your team as end users or do you have a complex situation in large enterprise - system thinking)?

Side note: regarding to container management, depending on existing expertise you might consider using a solution bundling Kubernetes, e.g. OpenShift as already mentioned or RancherLabs etc. Regarding Jenkins, after you know what is happening, skip through its plugins, Jenkins-as-is is just a beginning.

3

I've been responsible for setting up DevOps processes in two companies from scratch so hopefully this will help.

Others have asked questions about business objectives but I'm going to give you a brief rundown of some of the problems we had and the technologies I used to fix it.

  1. Infrastructure Creation/Management was slow and error prone - I started creating and managing our infra (particularly K8's clusters) using Terraform
  2. Kubernetes CI/CD becomes difficult as the number of services grows - to solve this issue we started using Helm which bills itself as the 'missing package manager' for Kubernetes, but it also helps manage Kubernetes .yaml files as templates which helps simplify CI/CD
  3. CI/CD - Building/testing and deploying applications was also slow and cumbersome, so we started using Jenkins (Blue Ocean) to define our deployment pipelines in a Jenkinsfile. Highly recommend this if you are still using the old version of Jenkins.
  4. Managing configurations of mutable infrastructure - we still have some 'mutable' infrastructure which was prone to drift, and you could use Chef or Ansible to manage those to minimise configuration drift or to bootstrap new servers quickly.
  • what about binary repository managers to store artefacts coming from the CI, i.e. Artifactory or Nexus? – Peter Sep 19 '18 at 17:02
  • Thanks. This was very useful. We already are using most, except the Helm one! Maybe I should introduce it to them! – Tina J Sep 19 '18 at 17:29
  • Peter I generally use Amazon S3 for artifact storage. – Caledonia91 Sep 21 '18 at 8:39
  • Helm is good but Helmfile is awesome. Put a list of releases into helmfile.yaml into git and setup a jenkins job to trigger that just runs helmfile cli that will run helm for each release. Helmfile apply command will diff all the stuff in k8s against what is in git and only update what has changed. It supports encryption of values in yaml so the it's okay to have secrets in git. – simbo1905 Jan 17 at 22:07
0

If you looking for a fun idea try adding a chatbot to drive your devops automation:

slackbot deploy

slackbot regex

Slackbot architecture

I wrote a short presentation with a link at the end to a video of settings up a chatbot on slack but botkit supports a lot of different chat solutions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.