Alternatives to Eclipse logo

Alternatives to Eclipse

Android Studio, Visual Studio, IntelliJ IDEA, NetBeans IDE, and PyCharm are the most popular alternatives and competitors to Eclipse.
2.6K
2.2K
+ 1
392

What is Eclipse and what are its top alternatives?

Standard Eclipse package suited for Java and plug-in development plus adding new plugins; already includes Git, Marketplace Client, source code and developer documentation. Click here to file a bug against Eclipse Platform.
Eclipse is a tool in the Integrated Development Environment category of a tech stack.

Top Alternatives to Eclipse

  • Android Studio
    Android Studio

    Android Studio is a new Android development environment based on IntelliJ IDEA. It provides new features and improvements over Eclipse ADT and will be the official Android IDE once it's ready. ...

  • Visual Studio
    Visual Studio

    Visual Studio is a suite of component-based software development tools and other technologies for building powerful, high-performance applications. ...

  • IntelliJ IDEA
    IntelliJ IDEA

    Out of the box, IntelliJ IDEA provides a comprehensive feature set including tools and integrations with the most important modern technologies and frameworks for enterprise and web development with Java, Scala, Groovy and other languages. ...

  • NetBeans IDE
    NetBeans IDE

    NetBeans IDE is FREE, open source, and has a worldwide community of users and developers. ...

  • PyCharm
    PyCharm

    PyCharm’s smart code editor provides first-class support for Python, JavaScript, CoffeeScript, TypeScript, CSS, popular template languages and more. Take advantage of language-aware code completion, error detection, and on-the-fly code fixes! ...

  • Atom
    Atom

    At GitHub, we're building the text editor we've always wanted. A tool you can customize to do anything, but also use productively on the first day without ever touching a config file. Atom is modern, approachable, and hackable to the core. We can't wait to see what you build with it. ...

  • 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. ...

Eclipse alternatives & related posts

Android Studio logo

Android Studio

24.9K
19.8K
361
Android development environment based on IntelliJ IDEA
24.9K
19.8K
+ 1
361
PROS OF ANDROID STUDIO
  • 176
    Android studio is a great tool, getting better and bet
  • 103
    Google's official android ide
  • 37
    Intelligent code editor with lots of auto-completion
  • 25
    Its powerful and robust
  • 5
    Easy creating android app
  • 3
    Amazing Layout Designer
  • 3
    Great Code Tips
  • 3
    Great tool & very helpful
  • 2
    Easy to use
  • 2
    Built in Emulator
  • 2
    Keyboard Shortcuts are Amazing Out of the box
CONS OF ANDROID STUDIO
  • 4
    Slow emulator
  • 4
    Huge memory usage
  • 2
    Using Intellij IDEA, while Intellij IDEA have too
  • 2
    Complex for begginers
  • 2
    No checking incompatibilities
  • 1
    Lags behind IntelliJ IDEA
  • 1
    Slow release process

related Android Studio posts

Gustavo Muñoz
Senior Software Engineer at JOOR · | 8 upvotes · 443.8K views

In my modest opinion, Flutter is the future of mobile development. The framework is as important to mobile as React is to the web. And seeing that React Native does not finish taking off, I am focusing all my efforts on learning Flutter and Dart. The ecosystem is amazing. The community is crazy about Flutter. There are enough resources to learn and enjoy the framework, and the tools developed to work with it are amazing. Android Studio or Visual Studio Code has incredible plugins and Dart is a pretty straight forward and easy-to-learn language, even more, if you came from JavaScript. I admit it. I'm in love with Flutter. When you are not a designer, having a framework focused on design an pretty things is a must. And counting with tools like #flare for animations makes everything easier. It is so amazing that I wish I had a big mobile project right now at work just to use Flutter.

See more
Julien DeFrance
Principal Software Engineer at Tophatter · | 8 upvotes · 442.5K views

As a Engineering Manager & Director at SmartZip, I had a mix of front-end, back-end, #mobile engineers reporting to me.

Sprints after sprints, I noticed some inefficiencies on the MobileDev side. People working multiple sprints in a row on their Xcode / Objective-C codebase while some others were working on Android Studio. After which, QA & Product ensured both applications were in sync, on a UI/UX standpoint, creating addional work, which also happened to be extremely costly.

Our resources being so limited, my role was to stop this bleeding and keep my team productive and their time, valuable.

After some analysis, discussions, proof of concepts... etc. We decided to move to a single codebase using React Native so our velocity would increase.

After some initial investment, our initial assumptions were confirmed and we indeed started to ship features a lot faster than ever before. Also, our engineers found a way to perform this upgrade incrementally, so the initial platform-specific codebase wouldn't have to entirely be rewritten at once but only gradually and at will.

Feedback around React Native was very positive. And I doubt - for the kind of application we had - no one would want to go back to two or more code bases. Our application was still as Native as it gets. And no feature or device capability was compromised.

See more
Visual Studio logo

Visual Studio

47.5K
36.9K
1.1K
State-of-the-art tools and services that you can use to create great apps for devices, the cloud, and everything...
47.5K
36.9K
+ 1
1.1K
PROS OF VISUAL STUDIO
  • 305
    Intellisense, ui
  • 244
    Complete ide and debugger
  • 165
    Plug-ins
  • 104
    Integrated
  • 93
    Documentation
  • 37
    Fast
  • 35
    Node tools for visual studio (ntvs)
  • 33
    Free Community edition
  • 24
    Simple
  • 17
    Bug free
  • 8
    Made by Microsoft
  • 6
    Full free community version
  • 5
    JetBrains plugins (ReSharper etc.) work sufficiently OK
  • 3
    Productivity Power Tools
  • 2
    Vim mode
  • 2
    VIM integration
  • 1
    I develop UWP apps and Intellisense is super useful
  • 1
    Cross platform development
  • 1
    The Power and Easiness to Do anything in any.. language
  • 1
    Available for Mac and Windows
CONS OF VISUAL STUDIO
  • 15
    Bulky
  • 14
    Made by Microsoft
  • 6
    Sometimes you need to restart to finish an update
  • 3
    Too much size for disk
  • 3
    Only avalible on Windows

related Visual Studio posts

Shared insights
on
C#C#JavaJavaVisual StudioVisual Studio

I use C# because of the ease of designing user interfaces compared to Java. Using Visual Studio makes C# a breeze for prototyping and creating apps and I really appreciate how quickly I can turn an idea into reality. I was first introduced to C# in a special topics course and quickly started preferring it over Java. The similarities between the two made the switch easy while the added benefits C# offers made it very worth it.

See more
Andrey Kurdyumov

I use TypeScript because it greatly simplify my refactoring efforts. I regularly re-validate my assumption about application architecture, and strictness of types allow me write make changes safely using just Visual Studio tooling. Integration with existing JavaScript libraries very simple and fast. If I have no time, I could just use any type as output of JS module. When I have more time, I could just submit PR to DefinitelyTyped and it would be quickly accepted. Overall it gives less ambiguity for my code.

See more
IntelliJ IDEA logo

IntelliJ IDEA

42.7K
35.8K
1.5K
Capable and Ergonomic IDE for JVM
42.7K
35.8K
+ 1
1.5K
PROS OF INTELLIJ IDEA
  • 301
    Fantastically intelligent
  • 242
    Best-in-class ide
  • 190
    Many languages support
  • 158
    Java
  • 121
    Fast
  • 82
    Code analysis
  • 79
    Reliable
  • 76
    Out of the box integration with maven, git, svn
  • 64
    Plugin architecture
  • 61
    Integrated version control
  • 12
    Code refactoring support
  • 11
    Best java IDE
  • 7
    Local history
  • 6
    Code Completion
  • 6
    Kotlin
  • 6
    Integrated Database Navigator
  • 6
    Built-in terminal/run tools
  • 5
    All
  • 5
    Free for open-source development, students and teacher
  • 5
    Base for Android Studio
  • 5
    Free If you're a Student
  • 4
    ERD Diagrams
  • 4
    Free
  • 4
    Cross platform
  • 4
    IDE
  • 4
    Database/Code integration
  • 3
    Out Of The Box features
  • 3
    Column Selection Mode
  • 3
    Server and client-side debugger
  • 3
    More than enough languages for any developer
  • 3
    Typescript support
  • 3
    Multicursor support
  • 3
    Reformating Code
  • 3
    Intuitive
  • 3
    Command-line tools
  • 3
    Android Integration
  • 3
    Vim support
  • 3
    Special icons for most filetypes in project list
  • 3
    Supports many frameworks
  • 3
    Built-in web server
  • 3
    Live Templates
  • 3
    Scala support
  • 2
    Works fine with mac os catalina
  • 2
    A lot of plugin
  • 2
    Just works
  • 2
    Integrated Ssh/Ftp Managers
  • 2
    Full support
  • 2
    Task managers
  • 2
    Diff tools
  • 2
    File Watchers
  • 2
    Support for various package managers
  • 2
    Integrated Code Linting
  • 2
    Clean UI
  • 2
    Open source
  • 2
    So modernised
  • 2
    Efficient, one Stop solution
CONS OF INTELLIJ IDEA
  • 20
    Large footprint required to really enjoy (mem/disc)
  • 16
    Very slow
  • 8
    Bad for beginners
  • 7
    UI is not intuitive
  • 5
    Not nearly as many tools to integrate as vs code
  • 5
    Constant reindexing
  • 4
    Needs a lot of CPU and RAM power
  • 3
    Built in terminal is slow
  • 3
    Doesn't work that well with windows 10 edu
  • 1
    Ruby is a plug in
  • 1
    Pesky warnings increase with every release
  • 0
    AAD

related IntelliJ IDEA posts

christy craemer

UPDATE: Thanks for the great response. I am going to start with VSCode based on the open source and free version that will allow me to grow into other languages, but not cost me a license ..yet.

I have been working with software development for 12 years, but I am just beginning my journey to learn to code. I am starting with Python following the suggestion of some of my coworkers. They are split between Eclipse and IntelliJ IDEA for IDEs that they use and PyCharm is new to me. Which IDE would you suggest for a beginner that will allow expansion to Java, JavaScript, and eventually AngularJS and possibly mobile applications?

See more

I am a QA heading to a new company where they all generally use Visual Studio Code, my experience is with IntelliJ IDEA and PyCharm. The language they use is JavaScript and so I will be writing my test framework in javaScript so the devs can more easily write tests without context switching.

My 2 questions: Does VS Code have Cucumber Plugins allowing me to write behave tests? And more importantly, does VS Code have the same refactoring tools that IntelliJ IDEA has? I love that I have easy access to a range of tools that allow me to refactor and simplify my code, making code writing really easy.

See more
NetBeans IDE logo

NetBeans IDE

685
946
514
Quickly and easily develop desktop, mobile and web applications with Java, HTML5, PHP, C/C++ and more
685
946
+ 1
514
PROS OF NETBEANS IDE
  • 76
    Rich features
  • 69
    Crossplatform
  • 49
    Plugins(Git, SVN)
  • 38
    Easy to use
  • 38
    Extensible
  • 35
    PHP Support
  • 34
    Java support
  • 28
    File History
  • 21
    Code analysis
  • 18
    MySQL support
  • 14
    Free
  • 14
    Open source
  • 10
    Code completion
  • 9
    Strong Maven Support
  • 8
    NodeJs support
  • 6
    Webdev king
  • 6
    Easy maven project start
  • 6
    Best
  • 4
    Jira Plugin
  • 4
    Foss
  • 3
    Out of the box integration with maven, git, svn
  • 3
    History of changes, friendly tabs
  • 3
    Mandatory
  • 2
    Intuitive ui
  • 2
    Chrome plugin to live update javascript from browser
  • 2
    Groovy support
  • 2
    Native Nette support
  • 2
    I don't like NetBeans
  • 2
    Smarty support
  • 2
    Visual GUI Builder for Swing / AWT
  • 2
    Custom html tags support
  • 1
    Powerful refactoring
  • 1
    Composer commands inside IDE
CONS OF NETBEANS IDE
  • 2
    PHP debug doesn't support conditional breakpoints

related NetBeans IDE posts

PyCharm logo

PyCharm

27.4K
23.3K
451
The Most Intelligent Python IDE
27.4K
23.3K
+ 1
451
PROS OF PYCHARM
  • 112
    Smart auto-completion
  • 93
    Intelligent code analysis
  • 77
    Powerful refactoring
  • 60
    Virtualenv integration
  • 54
    Git integration
  • 22
    Support for Django
  • 11
    Multi-database integration
  • 7
    VIM integration
  • 4
    Vagrant integration
  • 3
    In-tool Bash and Python shell
  • 2
    Plugin architecture
  • 2
    Docker
  • 1
    Django Implemented
  • 1
    Debug mode support docker
  • 1
    Emacs keybinds
  • 1
    Perforce integration
CONS OF PYCHARM
  • 10
    Slow startup
  • 7
    Not very flexible
  • 6
    Resource hog
  • 3
    Periodic slow menu response
  • 1
    Pricey for full features

related PyCharm posts

christy craemer

UPDATE: Thanks for the great response. I am going to start with VSCode based on the open source and free version that will allow me to grow into other languages, but not cost me a license ..yet.

I have been working with software development for 12 years, but I am just beginning my journey to learn to code. I am starting with Python following the suggestion of some of my coworkers. They are split between Eclipse and IntelliJ IDEA for IDEs that they use and PyCharm is new to me. Which IDE would you suggest for a beginner that will allow expansion to Java, JavaScript, and eventually AngularJS and possibly mobile applications?

See more

I am a QA heading to a new company where they all generally use Visual Studio Code, my experience is with IntelliJ IDEA and PyCharm. The language they use is JavaScript and so I will be writing my test framework in javaScript so the devs can more easily write tests without context switching.

My 2 questions: Does VS Code have Cucumber Plugins allowing me to write behave tests? And more importantly, does VS Code have the same refactoring tools that IntelliJ IDEA has? I love that I have easy access to a range of tools that allow me to refactor and simplify my code, making code writing really easy.

See more
Atom logo

Atom

16.8K
14.4K
2.5K
A hackable text editor for the 21st Century
16.8K
14.4K
+ 1
2.5K
PROS OF ATOM
  • 529
    Free
  • 449
    Open source
  • 343
    Modular design
  • 321
    Hackable
  • 316
    Beautiful UI
  • 147
    Backed by github
  • 119
    Built with node.js
  • 113
    Web native
  • 107
    Community
  • 35
    Packages
  • 18
    Cross platform
  • 5
    Nice UI
  • 5
    Multicursor support
  • 5
    TypeScript editor
  • 3
    Open source, lots of packages, and so configurable
  • 3
    cli start
  • 3
    Simple but powerful
  • 3
    Chrome Inspector works IN EDITOR
  • 3
    Snippets
  • 2
    Code readability
  • 2
    It's powerful
  • 2
    Awesome
  • 2
    Smart TypeScript code completion
  • 2
    Well documented
  • 1
    works with GitLab
  • 1
    "Free", "Hackable", "Open Source", The Awesomness
  • 1
    full support
  • 1
    vim support
  • 1
    Split-Tab Layout
  • 1
    Apm publish minor
  • 1
    Consistent UI on all platforms
  • 1
    User friendly
  • 1
    Hackable and Open Source
  • 0
    Publish
CONS OF ATOM
  • 19
    Slow with large files
  • 7
    Slow startup
  • 2
    Most of the time packages are hard to find.
  • 1
    No longer maintained
  • 1
    Cannot Run code with F5
  • 1
    Can be easily Modified

related Atom posts

Jerome Dalbert
Principal Backend Software Engineer at StackShare · | 13 upvotes · 917.3K views

I liked Sublime Text for its speed, simplicity and keyboard shortcuts which synergize well when working on scripting languages like Ruby and JavaScript. I extended the editor with custom Python scripts that improved keyboard navigability such as autofocusing the sidebar when no files are open, or changing tab closing behavior.

But customization can only get you so far, and there were little things that I still had to use the mouse for, such as scrolling, repositioning lines on the screen, selecting the line number of a failing test stack trace from a separate plugin pane, etc. After 3 years of wearily moving my arm and hand to perform the same repetitive tasks, I decided to switch to Vim for 3 reasons:

  • your fingers literally don’t ever need to leave the keyboard home row (I had to remap the escape key though)
  • it is a reliable tool that has been around for more than 30 years and will still be around for the next 30 years
  • I wanted to "look like a hacker" by doing everything inside my terminal and by becoming a better Unix citizen

The learning curve is very steep and it took me a year to master it, but investing time to be truly comfortable with my #TextEditor was more than worth it. To me, Vim comes close to being the perfect editor and I probably won’t need to switch ever again. It feels good to ignore new editors that come out every few years, like Atom and Visual Studio Code.

See more
Julian Sanchez
Lead Developer at Chore Champion · | 9 upvotes · 771.5K views

We use Visual Studio Code because it allows us to easily and quickly integrate with Git, much like Sublime Merge ,but it is integrated into the IDE. Another cool part about VS Code is the ability collaborate with each other with Visual Studio Live Share which allows our whole team to get more done together. It brings the convenience of the Google Suite to programming, offering something that works more smoothly than anything found on Atom or Sublime Text

See more
JavaScript logo

JavaScript

351.5K
267.6K
8.1K
Lightweight, interpreted, object-oriented language with first-class functions
351.5K
267.6K
+ 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
  • 897
    Fast
  • 745
    Light weight
  • 425
    Flexible
  • 392
    You can't get a device today that doesn't run js
  • 286
    Non-blocking i/o
  • 237
    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
    Future Language of The Web
  • 12
    Its everywhere
  • 11
    Because I love functions
  • 11
    JavaScript is the New PHP
  • 10
    Like it or not, JS is part of the web standard
  • 9
    Expansive community
  • 9
    Everyone use it
  • 9
    Can be used in backend, frontend and DB
  • 9
    Easy
  • 8
    Most Popular Language in the World
  • 8
    Powerful
  • 8
    Can be used both as frontend and backend as well
  • 8
    For the good parts
  • 8
    No need to use PHP
  • 8
    Easy to hire developers
  • 7
    Agile, packages simple to use
  • 7
    Love-hate relationship
  • 7
    Photoshop has 3 JS runtimes built in
  • 7
    Evolution of C
  • 7
    It's fun
  • 7
    Hard not to use
  • 7
    Versitile
  • 7
    Its fun and fast
  • 7
    Nice
  • 7
    Popularized Class-Less Architecture & Lambdas
  • 7
    Supports lambdas and closures
  • 6
    It let's me use Babel & Typescript
  • 6
    Can be used on frontend/backend/Mobile/create PRO Ui
  • 6
    1.6K Can be used on frontend/backend
  • 6
    Client side JS uses the visitors CPU to save Server Res
  • 6
    Easy to make something
  • 5
    Clojurescript
  • 5
    Promise relationship
  • 5
    Stockholm Syndrome
  • 5
    Function expressions are useful for callbacks
  • 5
    Scope manipulation
  • 5
    Everywhere
  • 5
    Client processing
  • 5
    What to add
  • 4
    Because it is so simple and lightweight
  • 4
    Only Programming language on browser
  • 1
    Test
  • 1
    Hard to learn
  • 1
    Test2
  • 1
    Not the best
  • 1
    Easy to understand
  • 1
    Subskill #4
  • 1
    Easy to learn
  • 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 · 10.7M 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

290.4K
174.5K
6.6K
Fast, scalable, distributed revision control system
290.4K
174.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 · 9.6M 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 · 8.6M 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