[{"name":"GoCD","quadrant":"Tools","ring":"Adopt","isNew":true,"description":"[GoCD](https://www.gocd.io/) is a Continuous Integration and Continuous Delivery System developed by [Thoughtworks](https://www.thoughtworks.com/go/) which was open sourced in 2014.","opinion":"The native support for pipelines as first class citizen, parallelism of jobs inside stages while keeping separate stages for sequential dependencies and better visualizations compared to other tools made GoCD our tool of choice at Indix. We also had in house expertise (one of our engineers was part of the core team) that motivated us to consider it in the first place. Over time, we gained more maturity and have been actively working on contributing to various developments around it. Check out [S3 Artifacts Plugin](https://github.com/indix/gocd-s3-artifacts), [Agents auto-scaler on top of Mesos](https://github.com/indix/gocd-mesos) and [auto-scaling with containers](https://github.com/indix/vasuki)."},{"name":"Snap CI","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[Snap CI](https://www.snap-ci.com) is a CI/CD tool hosted on the cloud that allows easy configuration of build pipelines.","opinion":"We were actively using Snap CI for hosting our OSS builds. However, we are migrating away from it to Travis CI as SnapCI is being [decommissioned soon](https://blog.snap-ci.com/blog/2017/02/06/2017-02-06-snap-announcement/)"},{"name":"Travis CI","quadrant":"Tools","ring":"Adopt","isNew":true,"description":"[Travis CI](https://travis-ci.org/) is a cloud based CI tool offering seamless integration with Github.","opinion":"We are in the process of migrating away from Snap CI for our open source projects. Feature wise we found it to be the best out of the available CI solutions on the cloud."},{"name":"Concourse CI","quadrant":"Tools","ring":"Assess","isNew":true,"description":"[Concourse CI](https://concourse.ci/index.html) comes with first-class support for containers and a fairly simple UI.","opinion":"The container support makes it a good CI tool to assess"},{"name":"Jenkins","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[Jenkins](https://jenkins.io/) is the most popular CI tool around which comes with a lot of features and plugins that enable it to be a unified build and automation tool.","opinion":"A big drawback for us was that Jenkins lacks first class support for pipelines thereby making it tricky to implement non trivial CD workflows."},{"name":"Ansible","quadrant":"Tools","ring":"Adopt","isNew":true,"description":"[Ansible](https://www.ansible.com) is an open-source automation engine that automates cloud provisioning, configuration management and application deployment.","opinion":"The agent-less architecture enables us to create automation and manage configurations/ deployment with very little effort. Also, it comes with a matured support for provisioning and deployment as well. Its simplicity compared to other complex tools was another reason behind our decision."},{"name":"Chef-server","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[Chef](https://www.chef.io/chef) is a CM tool that enables you to manage large scale datacentres on and off the cloud with its client server model where the client reaches out to the server periodically to sync its configurations.","opinion":"Maintaining a higly available Chef server able to handle the scale of our infrastructure was proving to be a difficult task."},{"name":"Terraform","quadrant":"Tools","ring":"Trial","isNew":true,"description":"[Terraform](https://www.terraform.io) is a tool for building, changing, and versioning infrastructure safely and efficiently.","opinion":"Terraform's focus on provisioning, the ability to create immutable infra and a good community support were the primary motivations for us to try it at Indix. The support for AWS and the pace at which newer features are available in the tool encouraged us to use it for a part of our infrastructure."},{"name":"Cloudformation","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[AWS CloudFormation](https://aws.amazon.com/cloudformation) helps create and manage a collection of related AWS resources.","opinion":"The complicated JSON required to create templates in CloudFormation and a solid alternative in Terraform made us put this on hold"},{"name":"Bind","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[BIND](https://www.isc.org/downloads/bind) is open source software that enables you to publish your Domain Name System (DNS) information on the Internet, and to resolve DNS queries for your users. At Indix we were in favor of a managed DNS service hence we put [Bind](https://www.isc.org/downloads/bind) on hold.","opinion":"We started with Bind since our inception but over time we realized the managing and scaling a DNS infra is far more complicated than one thinks. Given that many hosted DNS solutions came up over time, we favored to move away from maintaining our own infrastructure for such a super-critical component like DNS. More details can be found in our blog [post](https://www.indix.com/blog/developer/dns-at-indix-part-1/)"},{"name":"Route53","quadrant":"Tools","ring":"Adopt","isNew":true,"description":"[Amazon Route 53](https://aws.amazon.com/route53) is a highly available and scalable cloud Domain Name System (DNS) service.","opinion":"Route53 has matured a lot since it was released years back. Features like Private hosted zones, VPC association, DNS aliasing (Very useful for Zone Apex), multiple routing policies have been tremendously useful for us. Along with those, having a scalable & highly-available DNS service without any headache of maintenance made us to choose it."},{"name":"Capistrano","quadrant":"Tools","ring":"Hold","isNew":true,"description":"A remote server automation and deployment tool written in Ruby.","opinion":"At Indix we are using [Ansible](https://www.ansible.com) for both CM and provisioning so it made it simpler to choose the same over [Capistrano](http://capistranorb.com) as Capistrano didn't bring anything new to the table than what [Ansible](https://www.ansible.com) had to offer in terms of deployments."},{"name":"Splunk","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[Splunk](https://www.splunk.com) is a log management tool that can be used to monitor and analyze the data collected. The data collected can then be used to generate graphs, reports, alerts and dashboards.","opinion":"At Indix we just needed a simple and cost-effective tool for log management/ alerting & reporting. Even though we started with Splunk initially (via a startup discount), it turned out to be too costly for us and hence we put it on hold."},{"name":"Loggly","quadrant":"Tools","ring":"Adopt","isNew":true,"description":"[Loggly](https://www.loggly.com) is a cloud based log management tool where you simply install a client on your server and the log is shipped to a central unit for management.","opinion":"We adopted Loggly as it was economical, well managed, cloud based hosted solution and had a decent functionality for analytics which was good enough for our use-cases."},{"name":"ELK","quadrant":"Tools","ring":"Hold","isNew":true,"description":"[ElasticSearch Logstash Kibana](https://www.elastic.co/videos/introduction-to-the-elk-stack) is a combination of open source tools which can used for log management. Its one of the commonly used tools for log management in the industry.","opinion":"At Indix we chose a managed service for centralized logging since the complex architecture and efforts needed to manage an in-house ELK stack sounded too much. Based on our evaluation, building a Highly Available and Scalable ELK stack wasn't cost effective given we were dealing with several hundred GBs of logs on a daily basis. Moreover, there were features like defining alerts from UI, being able to use derived field etc were missing in ELK."},{"name":"Docker for production","quadrant":"Platforms","ring":"Assess","isNew":true,"description":"[Docker](https://www.docker.com) is currently synonymous to containers","opinion":"The continuosly changing set of features, incompatbilities across versions have made us cautious."},{"name":"Rkt","quadrant":"Platforms","ring":"Assess","isNew":true,"description":"[Rkt](https://github.com/coreos/rkt) is a container engine from CoreOs. It is composable, secure, and built on standards.","opinion":"The focus on security and a composable architecture are the key reasons why we want to assess this tool."},{"name":"CoreOS","quadrant":"Platforms","ring":"Trial","isNew":true,"description":"CoreOS (Container Linux) is a lightweight operating system based on the Linux kernel and designed for providing infrastructure to clustered deployments.","opinion":"Focus on containers, stable Docker support and the synergy with using it as a base OS for Kubernetes clusters mean that CoreOS is the OS of choice for our Kubernetes cluster."},{"name":"CentOS","quadrant":"Platforms","ring":"Hold","isNew":true,"description":"The [CentOS](https://www.centos.org) Linux distribution is a platform derived from the sources of Red Hat Enterprise Linux (RHEL).","opinion":"Outdated packages and with our engineers being more comfortable with Ubuntu, made us move away from CentOS."},{"name":"Ubuntu","quadrant":"Platforms","ring":"Adopt","isNew":true,"description":"[Ubuntu](https://www.ubuntu.com) is one of the most popular debian Linux distros out there.","opinion":"We like the active community support, frequent updates and the up-to-date package management."},{"name":"Mesos","quadrant":"Platforms","ring":"Adopt","isNew":true,"description":"[Apache Mesos](http://mesos.apache.org) abstracts CPU, memory, storage, and other compute resources away from machines (physical or virtual), enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.","opinion":"We find Mesos as a great tool for managing resources in a heterogeneous cluster of machines. With it's native support for containers, it provides a great way to run your applications with an optimized resource allocation. Along with frameworks like Marathon, the deployments and failure recovery becomes very straightforward & simple to manage."},{"name":"Marathon","quadrant":"Platforms","ring":"Adopt","isNew":true,"description":"[Marathon](https://mesosphere.github.io/marathon) is a container orchestration platform on top of Mesos.","opinion":"We use Marathon to manage application deployments for long running services in Mesos. With its ability of advanced scheduling & automatic recovery of crashed applications, it was a good addition into our Mesos platform."},{"name":"Kubernetes","quadrant":"Platforms","ring":"Trial","isNew":true,"description":"[Kubernetes](https://kubernetes.io) is an open-source system for automating deployment, scaling, and management of containerized applications.","opinion":"Kubernetes, out of the box, provided lots of features around service discovery, load balancing and internal DNS that had to be configured in other such tools. The abstractions for applications deployments were much easier from Developer perspective and we wanted to try Kubernetes for our newer applications and services."},{"name":"Mesosphere DCOS","quadrant":"Platforms","ring":"Assess","isNew":true,"description":"Mesosphere Enterprise DC/OS includes everything you need to elastically run containerized apps and data services in production.","opinion":"We wanted to assess this tool as it paired well with [mesos/marathon](https://mesosphere.github.io/marathon) that we are already using."},{"name":"AWS","quadrant":"Platforms","ring":"Adopt","isNew":true,"description":"[AWS](https://aws.amazon.com) is a public IAAS provider that provides a rich set of features to host your infrastructure in the public cloud.","opinion":"We like the scale, reliability and flexibility that [AWS](https://aws.amazon.com) had to offer. Also being the leading IAAS provider in the market it has good integration with the best tools for provisioning and automation required to manage a platform like this. We have been using AWS since the beginning and have gained solid expertise on developing under AWS."},{"name":"Google Cloud","quadrant":"Platforms","ring":"Assess","isNew":true,"description":"[Google Cloud](https://cloud.google.com) is Google's cloud offering.","opinion":"Even though Indix is entirely hosted in AWS for several years now, we are thinking to assess alternate solutions like Google Cloud, especially from a cost perspective. We currently do not have a compelling reason /use case to intiate such a migration, but something that we are keeping an eye on."},{"name":"HTTPS Everywhere","quadrant":"Techniques","ring":"Adopt","isNew":true,"description":"Enabling HTTPS for web sites is easier than ever with services like [Let’s Encrypt](https://letsencrypt.org) and [AWS Certificate Manager (ACM)](http://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html)","opinion":"We are using ACM with AWS resources like ELBs and Let's Encrypt when SSL termination happens with other third party integrations like Apigee."},{"name":"MultiFactor Authentication","quadrant":"Techniques","ring":"Adopt","isNew":true,"description":"Multifactor Authentication is a security best practice where authentication is achieved through different modes and not just one.","opinion":"With more and more vulnerabilities & attacks coming in the news, security has become a concern for everybody today. There is no compromise when it comes to security at Indix. MFA (Or 2FA) adds another layer of security on top of traditional methods and we have enforced MFA for AWS, Google and Github as we give security utmost importance."},{"name":"Bash","quadrant":"Languages","ring":"Adopt","isNew":true,"description":"[Bash](https://www.gnu.org/software/bash/) is the default shell available in most linux platforms.","opinion":"Since we are a Linux only environment Bash is the default scripting tool. We use it for all low level system based activities and also to create small integrations between other automation tools."},{"name":"Python","quadrant":"Languages","ring":"Adopt","isNew":true,"description":"[Python](https://www.python.org) is a well known scripting and programming language.","opinion":"Python fills the need for a high level language where Bash can be inadequate or too verbose. Python is a default in most Linux operation systems and is a requirement for configuration management with Ansible."},{"name":"Ruby","quadrant":"Languages","ring":"Hold","isNew":true,"description":"[Ruby](https://www.ruby-lang.org) is a well known scripting and programming language.","opinion":"We started using Ruby since we were using Capistrano and Chef. Having moved away (or initiated the process of moving away) from both, and with Python filling all the needs, we want to avoid Ruby usage in any new scripts."},{"name":"Go","quadrant":"Languages","ring":"Trial","isNew":true,"description":"[Go](https://golang.org) is an open source programming language created at Google that makes it easy to build simple, reliable, and efficient software.","opinion":"Go has been gaining popularity due to its concurrency primitives & ease of development. We've built a bunch of infrastructure automation tools in Go. Go will the language of choice for any new tools we build in the Infra and Ops space."}]