Alternatives to Mandrill logo

Alternatives to Mandrill

Twilio SendGrid, Mailchimp, Apache Drill, Mailgun, and Gmail are the most popular alternatives and competitors to Mandrill.
4.4K
1.6K
+ 1
926

What is Mandrill and what are its top alternatives?

Mandrill is a new way for apps to send transactional email. It runs on the delivery infrastructure that powers MailChimp.
Mandrill is a tool in the Transactional Email category of a tech stack.

Top Alternatives to Mandrill

  • Twilio SendGrid
    Twilio SendGrid

    Twilio SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. Twilio SendGrid provides reliable delivery, scalability & real-time analytics along with flexible API's. ...

  • Mailchimp
    Mailchimp

    MailChimp helps you design email newsletters, share them on social networks, integrate with services you already use, and track your results. It's like your own personal publishing platform. ...

  • Apache Drill
    Apache Drill

    Apache Drill is a distributed MPP query layer that supports SQL and alternative query languages against NoSQL and Hadoop data storage systems. It was inspired in part by Google's Dremel. ...

  • Mailgun
    Mailgun

    Mailgun is a set of powerful APIs that allow you to send, receive, track and store email effortlessly. ...

  • Gmail
    Gmail

    An easy to use email app that saves you time and keeps your messages safe. Get your messages instantly via push notifications, read and respond online & offline, and find any message quickly. ...

  • Amazon SES
    Amazon SES

    Amazon SES eliminates the complexity and expense of building an in-house email solution or licensing, installing, and operating a third-party email service. The service integrates with other AWS services, making it easy to send emails from applications being hosted on services such as Amazon EC2. ...

  • JavaScript
    JavaScript

    JavaScript is most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or Apache CouchDB. It is a prototype-based, multi-paradigm scripting language that is dynamic,and supports object-oriented, imperative, and functional programming styles. ...

  • Git
    Git

    Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. ...

Mandrill alternatives & related posts

Twilio SendGrid logo

Twilio SendGrid

10.5K
5.5K
720
Email Delivery. Simplified.
10.5K
5.5K
+ 1
720
PROS OF TWILIO SENDGRID
  • 190
    Easy setup
  • 137
    Cheap and simple
  • 107
    Easy email integration!
  • 86
    Reliable
  • 58
    Well-documented
  • 28
    Generous free allowance to get you started
  • 25
    Trackable
  • 21
    Heroku add-on
  • 15
    Azure add-on
  • 13
    Better support for third party integrations
  • 6
    Simple installation
  • 6
    Free plan
  • 4
    Helpful evangelist staff
  • 4
    Great client libraries
  • 3
    Great support
  • 3
    Better customer support than the competition
  • 3
    Great add-ons
  • 2
    Nice dashboard
  • 2
    Scalable
  • 1
    Web editor for templates
  • 1
    Cool setup
  • 1
    Within integration
  • 1
    Easy set up
  • 1
    Free
  • 1
    Great customer support
  • 1
    Google cloud messaging
CONS OF TWILIO SENDGRID
  • 3
    Google analytics integration is not campaign-specific
  • 1
    Shared IP blacklist removal takes months
  • 0
    Shares IP blacklist removal

related Twilio SendGrid posts

Repost

Overview: To put it simply, we plan to use the MERN stack to build our web application. MongoDB will be used as our primary database. We will use ExpressJS alongside Node.js to set up our API endpoints. Additionally, we plan to use React to build our SPA on the client side and use Redis on the server side as our primary caching solution. Initially, while working on the project, we plan to deploy our server and client both on Heroku . However, Heroku is very limited and we will need the benefits of an Infrastructure as a Service so we will use Amazon EC2 to later deploy our final version of the application.

Serverside: nodemon will allow us to automatically restart a running instance of our node app when files changes take place. We decided to use MongoDB because it is a non relational database which uses the Document Object Model. This allows a lot of flexibility as compared to a RDMS like SQL which requires a very structural model of data that does not change too much. Another strength of MongoDB is its ease in scalability. We will use Mongoose along side MongoDB to model our application data. Additionally, we will host our MongoDB cluster remotely on MongoDB Atlas. Bcrypt will be used to encrypt user passwords that will be stored in the DB. This is to avoid the risks of storing plain text passwords. Moreover, we will use Cloudinary to store images uploaded by the user. We will also use the Twilio SendGrid API to enable automated emails sent by our application. To protect private API endpoints, we will use JSON Web Token and Passport. Also, PayPal will be used as a payment gateway to accept payments from users.

Client Side: As mentioned earlier, we will use React to build our SPA. React uses a virtual DOM which is very efficient in rendering a page. Also React will allow us to reuse components. Furthermore, it is very popular and there is a large community that uses React so it can be helpful if we run into issues. We also plan to make a cross platform mobile application later and using React will allow us to reuse a lot of our code with React Native. Redux will be used to manage state. Redux works great with React and will help us manage a global state in the app and avoid the complications of each component having its own state. Additionally, we will use Bootstrap components and custom CSS to style our app.

Other: Git will be used for version control. During the later stages of our project, we will use Google Analytics to collect useful data regarding user interactions. Moreover, Slack will be our primary communication tool. Also, we will use Visual Studio Code as our primary code editor because it is very light weight and has a wide variety of extensions that will boost productivity. Postman will be used to interact with and debug our API endpoints.

See more

Overview: To put it simply, we plan to use the MERN stack to build our web application. MongoDB will be used as our primary database. We will use ExpressJS alongside Node.js to set up our API endpoints. Additionally, we plan to use React to build our SPA on the client side and use Redis on the server side as our primary caching solution. Initially, while working on the project, we plan to deploy our server and client both on Heroku. However, Heroku is very limited and we will need the benefits of an Infrastructure as a Service so we will use Amazon EC2 to later deploy our final version of the application.

Serverside: nodemon will allow us to automatically restart a running instance of our node app when files changes take place. We decided to use MongoDB because it is a non relational database which uses the Document Object Model. This allows a lot of flexibility as compared to a RDMS like SQL which requires a very structural model of data that does not change too much. Another strength of MongoDB is its ease in scalability. We will use Mongoose along side MongoDB to model our application data. Additionally, we will host our MongoDB cluster remotely on MongoDB Atlas. Bcrypt will be used to encrypt user passwords that will be stored in the DB. This is to avoid the risks of storing plain text passwords. Moreover, we will use Cloudinary to store images uploaded by the user. We will also use the Twilio SendGrid API to enable automated emails sent by our application. To protect private API endpoints, we will use JSON Web Token and Passport. Also, PayPal will be used as a payment gateway to accept payments from users.

Client Side: As mentioned earlier, we will use React to build our SPA. React uses a virtual DOM which is very efficient in rendering a page. Also React will allow us to reuse components. Furthermore, it is very popular and there is a large community that uses React so it can be helpful if we run into issues. We also plan to make a cross platform mobile application later and using React will allow us to reuse a lot of our code with React Native. Redux will be used to manage state. Redux works great with React and will help us manage a global state in the app and avoid the complications of each component having its own state. Additionally, we will use Bootstrap components and custom CSS to style our app.

Other: Git will be used for version control. During the later stages of our project, we will use Google Analytics to collect useful data regarding user interactions. Moreover, Slack will be our primary communication tool. Also, we will use Visual Studio Code as our primary code editor because it is very light weight and has a wide variety of extensions that will boost productivity. Postman will be used to interact with and debug our API endpoints.

See more
Mailchimp logo

Mailchimp

22.4K
12.3K
1.2K
Easy email newsletters
22.4K
12.3K
+ 1
1.2K
PROS OF MAILCHIMP
  • 259
    Smooth setup & ui
  • 248
    Mailing list
  • 148
    Robust e-mail creation
  • 120
    Integrates with a lot of external services
  • 109
    Custom templates
  • 59
    Free tier
  • 49
    Great api
  • 42
    Great UI
  • 33
    A/B Testing Subject Lines
  • 30
    Broad feature set
  • 11
    Subscriber Analytics
  • 9
    Great interface. The standard for email marketing
  • 8
    Great documentation
  • 8
    Mandrill integration
  • 7
    Segmentation
  • 6
    Best deliverability; helps you be the good guy
  • 5
    Facebook Integration
  • 5
    Autoresponders
  • 3
    Customization
  • 3
    RSS-to-email
  • 3
    Co-branding
  • 3
    Embedded signup forms
  • 2
    Automation
  • 1
    Great logo
  • 1
    Groups
  • 0
    Landing pages
CONS OF MAILCHIMP
  • 2
    Super expensive
  • 1
    Poor API
  • 1
    Charged based on subscribers as opposed to emails sent

related Mailchimp posts

Kirill Shirinkin
Cloud and DevOps Consultant at mkdev · | 12 upvotes · 680.4K views

As a small startup we are very conscious about picking up the tools we use to run the project. After suffering with a mess of using at the same time Trello , Slack , Telegram and what not, we arrived at a small set of tools that cover all our current needs. For product management, file sharing, team communication etc we chose Basecamp and couldn't be more happy about it. For Customer Support and Sales Intercom works amazingly well. We are using MailChimp for email marketing since over 4 years and it still covers all our needs. Then on payment side combination of Stripe and Octobat helps us to process all the payments and generate compliant invoices. On techie side we use Rollbar and GitLab (for both code and CI). For corporate email we picked G Suite. That all costs us in total around 300$ a month, which is quite okay.

See more
Spenser Coke
Product Engineer at Loanlink.de · | 9 upvotes · 285.5K views

When starting a new company and building a new product w/ limited engineering we chose to optimize for expertise and rapid development, landing on Rails API, w/ AngularJS on the front.

The reality is that we're building a CRUD app, so we considered going w/ vanilla Rails MVC to optimize velocity early on (it may not be sexy, but it gets the job done). Instead, we opted to split the codebase to allow for a richer front-end experience, focus on skill specificity when hiring, and give us the flexibility to be consumed by multiple clients in the future.

We also considered .NET core or Node.js for the API layer, and React on the front-end, but our experiences dealing with mature Node APIs and the rapid-fire changes that comes with state management in React-land put us off, given our level of experience with those tools.

We're using GitHub and Trello to track issues and projects, and a plethora of other tools to help the operational team, like Zapier, MailChimp, Google Drive with some basic Vue.js & HTML5 apps for smaller internal-facing web projects.

See more
Apache Drill logo

Apache Drill

71
170
16
Schema-Free SQL Query Engine for Hadoop and NoSQL
71
170
+ 1
16
PROS OF APACHE DRILL
  • 4
    NoSQL and Hadoop
  • 3
    Free
  • 3
    Lightning speed and simplicity in face of data jungle
  • 2
    Well documented for fast install
  • 1
    SQL interface to multiple datasources
  • 1
    Nested Data support
  • 1
    Read Structured and unstructured data
  • 1
    V1.10 released - https://drill.apache.org/
CONS OF APACHE DRILL
    Be the first to leave a con

    related Apache Drill posts

    Mailgun logo

    Mailgun

    7.9K
    4.2K
    656
    The Email Service for Developers.
    7.9K
    4.2K
    + 1
    656
    PROS OF MAILGUN
    • 178
      Quick email integration
    • 148
      Free plan
    • 91
      Easy setup
    • 67
      Ridiculously reliable
    • 53
      Extensive apis
    • 30
      Great for parsing inbound emails
    • 25
      Nice UI
    • 22
      Developer-centric
    • 15
      Excellent customer support
    • 12
      Heroku Add-on
    • 4
      Easy to view logs of sent emails
    • 4
      Email mailbox management for developers
    • 2
      Great PHP library
    • 2
      Great documentation
    • 2
      Great customer support, love rackspace
    • 1
      Better than sendgrid not ask too many question
    CONS OF MAILGUN
    • 2
      Cost
    • 2
      No HTTPS tracking links supported
    • 1
      Emails go to spam due to blacklisted IP's of mailgun
    • 1
      Cannot create multiple api keys

    related Mailgun posts

    Todd Gardner
    Shared insights
    on
    MandrillMandrillMailgunMailgun
    at

    We've moved our transactional email away from Mandrill to Mailgun. We had continued using Mandrill after Mailchimp deprecated the service awhile back, because the amount of credits we were offered essentially made it free.

    However, following a couple weeks of frequent downtime and poor service transparency from Mandrill, we decided it was time to make the switch. It appears they no longer had any engineers with the ability to identify the core problems.

    Mailgun has been more reliable, yet not as reliable as we expected. We still see issues a few times per week with the API failing when we attempt to make a call. The Reporting UI is way better.

    See more
    Gmail logo

    Gmail

    124.3K
    74.7K
    32
    A free web-based e-mail service
    124.3K
    74.7K
    + 1
    32
    PROS OF GMAIL
    • 21
      Its free
    • 7
      User-friendly
    • 2
      Nice UI
    • 2
      Snooze
    CONS OF GMAIL
    • 4
      Can't unsend, add open trackers or read recipients

    related Gmail posts

    Hi everyone, I am building a React website with Next.js, and I am trying to connect the contact form with the backend in order to receive the entered value into my emails, Do you have any advice on which email service or back-end service should I use, preferably open source or with free version usage?

    Actual experimentation: I tried to connect my form with Nodemailer package, basically it's working locally but in production on Vercel's server isn't working, it doesn't allow me to receive the data to my email( Gmail) as I am receiving it in localHost, and also email.js as far as I tried isn't a good match for my contact form since it can’t send all the data, only the message value; I would really appreciate if I can get any advice or suggestions; Thanks and kind regards!

    Moussa

    See more

    Hi! I am trying to decide between using Calendly or Meetingbird for my consultancy. I would like to connect 3/4 calendars (via Gmail / G Suite) and primarily use Zoom as my connection platform. I'd love to hear about what others use and your recommendations/points to consider. TIA!

    See more
    Amazon SES logo

    Amazon SES

    9.7K
    5.8K
    327
    Bulk and transactional email-sending service.
    9.7K
    5.8K
    + 1
    327
    PROS OF AMAZON SES
    • 102
      Reliable
    • 96
      Cheap
    • 57
      Integrates with other aws services
    • 52
      Easy setup
    • 18
      Trackable
    • 2
      Easy rails setup
    CONS OF AMAZON SES
      Be the first to leave a con

      related Amazon SES posts

      Cyril Duchon-Doris

      We decided to use AWS Lambda for several serverless tasks such as

      • Managing AWS backups
      • Processing emails received on Amazon SES and stored to Amazon S3 and notified via Amazon SNS, so as to push a message on our Redis so our Sidekiq Rails workers can process inbound emails
      • Pushing some relevant Amazon CloudWatch metrics and alarms to Slack
      See more
      Simon Bettison
      Managing Director at Bettison.org Limited · | 8 upvotes · 766.5K views

      In 2012 we made the very difficult decision to entirely re-engineer our existing monolithic LAMP application from the ground up in order to address some growing concerns about it's long term viability as a platform.

      Full application re-write is almost always never the answer, because of the risks involved. However the situation warranted drastic action as it was clear that the existing product was going to face severe scaling issues. We felt it better address these sooner rather than later and also take the opportunity to improve the international architecture and also to refactor the database in. order that it better matched the changes in core functionality.

      PostgreSQL was chosen for its reputation as being solid ACID compliant database backend, it was available as an offering AWS RDS service which reduced the management overhead of us having to configure it ourselves. In order to reduce read load on the primary database we implemented an Elasticsearch layer for fast and scalable search operations. Synchronisation of these indexes was to be achieved through the use of Sidekiq's Redis based background workers on Amazon ElastiCache. Again the AWS solution here looked to be an easy way to keep our involvement in managing this part of the platform at a minimum. Allowing us to focus on our core business.

      Rails ls was chosen for its ability to quickly get core functionality up and running, its MVC architecture and also its focus on Test Driven Development using RSpec and Selenium with Travis CI providing continual integration. We also liked Ruby for its terse, clean and elegant syntax. Though YMMV on that one!

      Unicorn was chosen for its continual deployment and reputation as a reliable application server, nginx for its reputation as a fast and stable reverse-proxy. We also took advantage of the Amazon CloudFront CDN here to further improve performance by caching static assets globally.

      We tried to strike a balance between having control over management and configuration of our core application with the convenience of being able to leverage AWS hosted services for ancillary functions (Amazon SES , Amazon SQS Amazon Route 53 all hosted securely inside Amazon VPC of course!).

      Whilst there is some compromise here with potential vendor lock in, the tasks being performed by these ancillary services are no particularly specialised which should mitigate this risk. Furthermore we have already containerised the stack in our development using Docker environment, and looking to how best to bring this into production - potentially using Amazon EC2 Container Service

      See more
      JavaScript logo

      JavaScript

      349.6K
      266.2K
      8.1K
      Lightweight, interpreted, object-oriented language with first-class functions
      349.6K
      266.2K
      + 1
      8.1K
      PROS OF JAVASCRIPT
      • 1.7K
        Can be used on frontend/backend
      • 1.5K
        It's everywhere
      • 1.2K
        Lots of great frameworks
      • 896
        Fast
      • 745
        Light weight
      • 425
        Flexible
      • 392
        You can't get a device today that doesn't run js
      • 286
        Non-blocking i/o
      • 236
        Ubiquitousness
      • 191
        Expressive
      • 55
        Extended functionality to web pages
      • 49
        Relatively easy language
      • 46
        Executed on the client side
      • 30
        Relatively fast to the end user
      • 25
        Pure Javascript
      • 21
        Functional programming
      • 15
        Async
      • 13
        Full-stack
      • 12
        Setup is easy
      • 12
        Its everywhere
      • 11
        JavaScript is the New PHP
      • 11
        Because I love functions
      • 10
        Like it or not, JS is part of the web standard
      • 9
        Can be used in backend, frontend and DB
      • 9
        Expansive community
      • 9
        Future Language of The Web
      • 9
        Easy
      • 8
        No need to use PHP
      • 8
        For the good parts
      • 8
        Can be used both as frontend and backend as well
      • 8
        Everyone use it
      • 8
        Most Popular Language in the World
      • 8
        Easy to hire developers
      • 7
        Love-hate relationship
      • 7
        Powerful
      • 7
        Photoshop has 3 JS runtimes built in
      • 7
        Evolution of C
      • 7
        Popularized Class-Less Architecture & Lambdas
      • 7
        Agile, packages simple to use
      • 7
        Supports lambdas and closures
      • 6
        1.6K Can be used on frontend/backend
      • 6
        It's fun
      • 6
        Hard not to use
      • 6
        Nice
      • 6
        Client side JS uses the visitors CPU to save Server Res
      • 6
        Versitile
      • 6
        It let's me use Babel & Typescript
      • 6
        Easy to make something
      • 6
        Its fun and fast
      • 6
        Can be used on frontend/backend/Mobile/create PRO Ui
      • 5
        Function expressions are useful for callbacks
      • 5
        What to add
      • 5
        Client processing
      • 5
        Everywhere
      • 5
        Scope manipulation
      • 5
        Stockholm Syndrome
      • 5
        Promise relationship
      • 5
        Clojurescript
      • 4
        Because it is so simple and lightweight
      • 4
        Only Programming language on browser
      • 1
        Hard to learn
      • 1
        Test
      • 1
        Test2
      • 1
        Easy to understand
      • 1
        Not the best
      • 1
        Easy to learn
      • 1
        Subskill #4
      • 0
        Hard 彤
      CONS OF JAVASCRIPT
      • 22
        A constant moving target, too much churn
      • 20
        Horribly inconsistent
      • 15
        Javascript is the New PHP
      • 9
        No ability to monitor memory utilitization
      • 8
        Shows Zero output in case of ANY error
      • 7
        Thinks strange results are better than errors
      • 6
        Can be ugly
      • 3
        No GitHub
      • 2
        Slow

      related JavaScript posts

      Zach Holman

      Oof. I have truly hated JavaScript for a long time. Like, for over twenty years now. Like, since the Clinton administration. It's always been a nightmare to deal with all of the aspects of that silly language.

      But wowza, things have changed. Tooling is just way, way better. I'm primarily web-oriented, and using React and Apollo together the past few years really opened my eyes to building rich apps. And I deeply apologize for using the phrase rich apps; I don't think I've ever said such Enterprisey words before.

      But yeah, things are different now. I still love Rails, and still use it for a lot of apps I build. But it's that silly rich apps phrase that's the problem. Users have way more comprehensive expectations than they did even five years ago, and the JS community does a good job at building tools and tech that tackle the problems of making heavy, complicated UI and frontend work.

      Obviously there's a lot of things happening here, so just saying "JavaScript isn't terrible" might encompass a huge amount of libraries and frameworks. But if you're like me, yeah, give things another shot- I'm somehow not hating on JavaScript anymore and... gulp... I kinda love it.

      See more
      Conor Myhrvold
      Tech Brand Mgr, Office of CTO at Uber · | 44 upvotes · 9.6M views

      How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:

      Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.

      Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:

      https://eng.uber.com/distributed-tracing/

      (GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)

      Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark

      See more
      Git logo

      Git

      288.5K
      173.5K
      6.6K
      Fast, scalable, distributed revision control system
      288.5K
      173.5K
      + 1
      6.6K
      PROS OF GIT
      • 1.4K
        Distributed version control system
      • 1.1K
        Efficient branching and merging
      • 959
        Fast
      • 845
        Open source
      • 726
        Better than svn
      • 368
        Great command-line application
      • 306
        Simple
      • 291
        Free
      • 232
        Easy to use
      • 222
        Does not require server
      • 27
        Distributed
      • 22
        Small & Fast
      • 18
        Feature based workflow
      • 15
        Staging Area
      • 13
        Most wide-spread VSC
      • 11
        Role-based codelines
      • 11
        Disposable Experimentation
      • 7
        Frictionless Context Switching
      • 6
        Data Assurance
      • 5
        Efficient
      • 4
        Just awesome
      • 3
        Github integration
      • 3
        Easy branching and merging
      • 2
        Compatible
      • 2
        Flexible
      • 2
        Possible to lose history and commits
      • 1
        Rebase supported natively; reflog; access to plumbing
      • 1
        Light
      • 1
        Team Integration
      • 1
        Fast, scalable, distributed revision control system
      • 1
        Easy
      • 1
        Flexible, easy, Safe, and fast
      • 1
        CLI is great, but the GUI tools are awesome
      • 1
        It's what you do
      • 0
        Phinx
      CONS OF GIT
      • 16
        Hard to learn
      • 11
        Inconsistent command line interface
      • 9
        Easy to lose uncommitted work
      • 7
        Worst documentation ever possibly made
      • 5
        Awful merge handling
      • 3
        Unexistent preventive security flows
      • 3
        Rebase hell
      • 2
        When --force is disabled, cannot rebase
      • 2
        Ironically even die-hard supporters screw up badly
      • 1
        Doesn't scale for big data

      related Git posts

      Simon Reymann
      Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 9M views

      Our whole DevOps stack consists of the following tools:

      • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
      • Respectively Git as revision control system
      • SourceTree as Git GUI
      • Visual Studio Code as IDE
      • CircleCI for continuous integration (automatize development process)
      • Prettier / TSLint / ESLint as code linter
      • SonarQube as quality gate
      • Docker as container management (incl. Docker Compose for multi-container application management)
      • VirtualBox for operating system simulation tests
      • Kubernetes as cluster management for docker containers
      • Heroku for deploying in test environments
      • nginx as web server (preferably used as facade server in production environment)
      • SSLMate (using OpenSSL) for certificate management
      • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
      • PostgreSQL as preferred database system
      • Redis as preferred in-memory database/store (great for caching)

      The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

      • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
      • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
      • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
      • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
      • Scalability: All-in-one framework for distributed systems.
      • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
      See more
      Tymoteusz Paul
      Devops guy at X20X Development LTD · | 23 upvotes · 8M views

      Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).

      It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up or vagrant reload we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.

      I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.

      We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.

      If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.

      The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).

      Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common Docker and CircleCI setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and LXC. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for Amazon EC2 (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.

      See more