Alternatives to Google Cloud Bigtable logo

Alternatives to Google Cloud Bigtable

Google Cloud Datastore, Microsoft Access, Google Cloud Spanner, MongoDB, and Google Cloud Storage are the most popular alternatives and competitors to Google Cloud Bigtable.
138
359
+ 1
25

What is Google Cloud Bigtable and what are its top alternatives?

Google Cloud Bigtable is a fully managed, scalable NoSQL database service designed for large analytical and operational workloads. Key features include automatic scalability, low latency, high throughput, and seamless integration with other Google Cloud services. However, some limitations include high pricing for smaller workloads and a steep learning curve for users unfamiliar with NoSQL databases.

  1. Amazon DynamoDB: Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. Key features include single-digit millisecond latency, automated backups, and built-in security features. Pros: easy scalability, seamless integration with AWS services. Cons: pricing can be expensive for large workloads.
  2. Azure Cosmos DB: Azure Cosmos DB is a globally distributed, multi-model database service that offers low latency and high availability. Key features include multiple data models, automatic scaling, and guaranteed high throughput. Pros: global distribution, multiple APIs supported. Cons: can be complex to manage for beginners.
  3. Cassandra: Apache Cassandra is an open-source, scalable, distributed database management system designed to handle large amounts of data with high availability and fault tolerance. Key features include linear scalability, decentralized architecture, and tunable consistency. Pros: decentralized architecture, fault tolerance. Cons: complex setup and maintenance.
  4. ScyllaDB: ScyllaDB is a high-performance, distributed database that is compatible with Apache Cassandra but delivers significantly higher throughput and lower latency. Key features include scale-out architecture, CQL compatibility, and real-time visibility into cluster performance. Pros: high throughput, low latency. Cons: limited support for certain data models.
  5. HBase: Apache HBase is an open-source, distributed, scalable, and consistent database built on top of the Hadoop Distributed File System (HDFS). Key features include linear and modular scalability, high availability, and integration with Apache Hadoop. Pros: strong consistency, seamless integration with Hadoop ecosystem. Cons: limited support for ad-hoc queries.
  6. Redis: Redis is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. Key features include high performance, support for various data structures, and built-in replication and clustering. Pros: high performance, versatile data structures. Cons: limited durability compared to disk-based databases.
  7. CockroachDB: CockroachDB is a distributed SQL database that is designed for global cloud services with strong consistency, ultra-resilience, and scalability. Key features include automatic scaling, geo-partitioning, and strong consistency guarantees. Pros: strong consistency, global scalability. Cons: can be complex to manage due to distributed nature.
  8. Aerospike: Aerospike is a high-performance, distributed NoSQL database built for speed at scale with a unique hybrid memory architecture. Key features include low-latency reads and writes, automatic data balancing, and strong consistency. Pros: low latency, high throughput. Cons: limited query capabilities compared to other databases.
  9. MarkLogic: MarkLogic is a multi-model NoSQL database platform that allows users to store, manage, and search structured and unstructured data. Key features include ACID transactions, versatile indexing capabilities, and semantic search. Pros: multi-model support, semantic search. Cons: can be complex to set up and configure for specific use cases.
  10. Cockroach Cloud: Cockroach Cloud is a fully managed, geo-distributed database service built on top of CockroachDB that offers automated scaling, high availability, and ultra-resilience. Key features include automatic failover, geo-replication, and horizontal scalability. Pros: fully managed service, global distribution. Cons: pricing can be expensive for large workloads.

Top Alternatives to Google Cloud Bigtable

  • Google Cloud Datastore
    Google Cloud Datastore

    Use a managed, NoSQL, schemaless database for storing non-relational data. Cloud Datastore automatically scales as you need it and supports transactions as well as robust, SQL-like queries. ...

  • Microsoft Access
    Microsoft Access

    It is an easy-to-use tool for creating business applications, from templates or from scratch. With its rich and intuitive design tools, it can help you create appealing and highly functional applications in a minimal amount of time. ...

  • Google Cloud Spanner
    Google Cloud Spanner

    It is a globally distributed database service that gives developers a production-ready storage solution. It provides key features such as global transactions, strongly consistent reads, and automatic multi-site replication and failover. ...

  • MongoDB
    MongoDB

    MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding. ...

  • Google Cloud Storage
    Google Cloud Storage

    Google Cloud Storage allows world-wide storing and retrieval of any amount of data and at any time. It provides a simple programming interface which enables developers to take advantage of Google's own reliable and fast networking infrastructure to perform data operations in a secure and cost effective manner. If expansion needs arise, developers can benefit from the scalability provided by Google's infrastructure. ...

  • Google Cloud SQL
    Google Cloud SQL

    Run the same relational databases you know with their rich extension collections, configuration flags and developer ecosystem, but without the hassle of self management. ...

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

Google Cloud Bigtable alternatives & related posts

Google Cloud Datastore logo

Google Cloud Datastore

252
356
12
A Fully Managed NoSQL Data Storage Service
252
356
+ 1
12
PROS OF GOOGLE CLOUD DATASTORE
  • 7
    High scalability
  • 2
    Serverless
  • 2
    Ability to query any property
  • 1
    Pay for what you use
CONS OF GOOGLE CLOUD DATASTORE
    Be the first to leave a con

    related Google Cloud Datastore posts

    Microsoft Access logo

    Microsoft Access

    79
    83
    0
    A database management system
    79
    83
    + 1
    0
    PROS OF MICROSOFT ACCESS
      Be the first to leave a pro
      CONS OF MICROSOFT ACCESS
        Be the first to leave a con

        related Microsoft Access posts

        Google Cloud Spanner logo

        Google Cloud Spanner

        44
        111
        3
        Fully managed, scalable, relational database service for regional and global application data
        44
        111
        + 1
        3
        PROS OF GOOGLE CLOUD SPANNER
        • 1
          Strongly consistent
        • 1
          Horizontal scaling
        • 1
          Scalable
        CONS OF GOOGLE CLOUD SPANNER
          Be the first to leave a con

          related Google Cloud Spanner posts

          MongoDB logo

          MongoDB

          91.8K
          79.2K
          4.1K
          The database for giant ideas
          91.8K
          79.2K
          + 1
          4.1K
          PROS OF MONGODB
          • 827
            Document-oriented storage
          • 593
            No sql
          • 553
            Ease of use
          • 464
            Fast
          • 410
            High performance
          • 257
            Free
          • 218
            Open source
          • 180
            Flexible
          • 145
            Replication & high availability
          • 112
            Easy to maintain
          • 42
            Querying
          • 39
            Easy scalability
          • 38
            Auto-sharding
          • 37
            High availability
          • 31
            Map/reduce
          • 27
            Document database
          • 25
            Easy setup
          • 25
            Full index support
          • 16
            Reliable
          • 15
            Fast in-place updates
          • 14
            Agile programming, flexible, fast
          • 12
            No database migrations
          • 8
            Easy integration with Node.Js
          • 8
            Enterprise
          • 6
            Enterprise Support
          • 5
            Great NoSQL DB
          • 4
            Support for many languages through different drivers
          • 3
            Drivers support is good
          • 3
            Aggregation Framework
          • 3
            Schemaless
          • 2
            Fast
          • 2
            Managed service
          • 2
            Easy to Scale
          • 2
            Awesome
          • 2
            Consistent
          • 1
            Good GUI
          • 1
            Acid Compliant
          CONS OF MONGODB
          • 6
            Very slowly for connected models that require joins
          • 3
            Not acid compliant
          • 1
            Proprietary query language

          related MongoDB posts

          Shared insights
          on
          Node.jsNode.jsGraphQLGraphQLMongoDBMongoDB

          I just finished the very first version of my new hobby project: #MovieGeeks. It is a minimalist online movie catalog for you to save the movies you want to see and for rating the movies you already saw. This is just the beginning as I am planning to add more features on the lines of sharing and discovery

          For the #BackEnd I decided to use Node.js , GraphQL and MongoDB:

          1. Node.js has a huge community so it will always be a safe choice in terms of libraries and finding solutions to problems you may have

          2. GraphQL because I needed to improve my skills with it and because I was never comfortable with the usual REST approach. I believe GraphQL is a better option as it feels more natural to write apis, it improves the development velocity, by definition it fixes the over-fetching and under-fetching problem that is so common on REST apis, and on top of that, the community is getting bigger and bigger.

          3. MongoDB was my choice for the database as I already have a lot of experience working on it and because, despite of some bad reputation it has acquired in the last months, I still believe it is a powerful database for at least a very long list of use cases such as the one I needed for my website

          See more
          Vaibhav Taunk
          Team Lead at Technovert · | 31 upvotes · 3.9M views

          I am starting to become a full-stack developer, by choosing and learning .NET Core for API Development, Angular CLI / React for UI Development, MongoDB for database, as it a NoSQL DB and Flutter / React Native for Mobile App Development. Using Postman, Markdown and Visual Studio Code for development.

          See more
          Google Cloud Storage logo

          Google Cloud Storage

          1.7K
          1.2K
          74
          Durable and highly available object storage service
          1.7K
          1.2K
          + 1
          74
          PROS OF GOOGLE CLOUD STORAGE
          • 28
            Scalable
          • 19
            Cheap
          • 14
            Reliable
          • 9
            Easy
          • 3
            Chealp
          • 1
            More praticlal and easy
          CONS OF GOOGLE CLOUD STORAGE
            Be the first to leave a con

            related Google Cloud Storage posts

            Context: I wanted to create an end to end IoT data pipeline simulation in Google Cloud IoT Core and other GCP services. I never touched Terraform meaningfully until working on this project, and it's one of the best explorations in my development career. The documentation and syntax is incredibly human-readable and friendly. I'm used to building infrastructure through the google apis via Python , but I'm so glad past Sung did not make that decision. I was tempted to use Google Cloud Deployment Manager, but the templates were a bit convoluted by first impression. I'm glad past Sung did not make this decision either.

            Solution: Leveraging Google Cloud Build Google Cloud Run Google Cloud Bigtable Google BigQuery Google Cloud Storage Google Compute Engine along with some other fun tools, I can deploy over 40 GCP resources using Terraform!

            Check Out My Architecture: CLICK ME

            Check out the GitHub repo attached

            See more
            Aliadoc Team

            In #Aliadoc, we're exploring the crowdfunding option to get traction before launch. We are building a SaaS platform for website design customization.

            For the Admin UI and website editor we use React and we're currently transitioning from a Create React App setup to a custom one because our needs have become more specific. We use CloudFlare as much as possible, it's a great service.

            For routing dynamic resources and proxy tasks to feed websites to the editor we leverage CloudFlare Workers for improved responsiveness. We use Firebase for our hosting needs and user authentication while also using several Cloud Functions for Firebase to interact with other services along with Google App Engine and Google Cloud Storage, but also the Real Time Database is on the radar for collaborative website editing.

            We generally hate configuration but honestly because of the stage of our project we lack resources for doing heavy sysops work. So we are basically just relying on Serverless technologies as much as we can to do all server side processing.

            Visual Studio Code definitively makes programming a much easier and enjoyable task, we just love it. We combine it with Bitbucket for our source code control needs.

            See more
            Google Cloud SQL logo

            Google Cloud SQL

            543
            572
            46
            Fully managed relational database service for MySQL, PostgreSQL, and SQL Server.
            543
            572
            + 1
            46
            PROS OF GOOGLE CLOUD SQL
            • 13
              Fully managed
            • 10
              Backed by Google
            • 10
              SQL
            • 4
              Flexible
            • 3
              Encryption at rest and transit
            • 3
              Automatic Software Patching
            • 3
              Replication across multiple zone by default
            CONS OF GOOGLE CLOUD SQL
              Be the first to leave a con

              related Google Cloud SQL posts

              Suman Adhikari
              Full Stack (Founder) at Peuconomia Int'l Pvt. Ltd. · | 10 upvotes · 34.8K views

              We use Go for the first-off due to our knowledge of it. Second off, it's highly performant and optimized for scalability. We run it using dockerized containers for our backend REST APIs.

              For Frontend, we use React with Next.js at vercel. We use NextJS here mostly due to our need for Server Side Rendering and easier route management.

              For Database, we use MySQL as it is first-off free and always has been in use with us. We use Google Cloud SQL from GCP that manages its storage and versions along with HA.

              All stacks are free to use and get the best juice out of the system. We also use Redis for caching for enterprise-grade apps where data retrieval latency matters the most.

              See more
              Ido Shamun
              at The Elegant Monkeys · | 6 upvotes · 43K views

              As far as the backend goes, we first had to decide which database will power most of Daily services. Considering relational databases vs document datbases, we decided that the relational model is a better fit for Daily as we have a lot of connections between the different entities. At the time MySQL was the only service available on Google Cloud SQL so this was out choice. In terms of #backend development Node.js powers most of our services, thanks to its amazing ecosystem there are a lot of modules publicly available to shorten the development time. Go is for the light services which are all about performance and delivering quickly the response, such as our redirector service.

              See more
              JavaScript logo

              JavaScript

              350.8K
              267.1K
              8.1K
              Lightweight, interpreted, object-oriented language with first-class functions
              350.8K
              267.1K
              + 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
              • 12
                Future Language of The Web
              • 11
                JavaScript is the New PHP
              • 11
                Because I love functions
              • 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
                Easy to hire developers
              • 8
                No need to use PHP
              • 8
                For the good parts
              • 8
                Can be used both as frontend and backend as well
              • 8
                Powerful
              • 8
                Most Popular Language in the World
              • 7
                Popularized Class-Less Architecture & Lambdas
              • 7
                It's fun
              • 7
                Nice
              • 7
                Versitile
              • 7
                Hard not to use
              • 7
                Its fun and fast
              • 7
                Agile, packages simple to use
              • 7
                Supports lambdas and closures
              • 7
                Love-hate relationship
              • 7
                Photoshop has 3 JS runtimes built in
              • 7
                Evolution of C
              • 6
                1.6K Can be used on frontend/backend
              • 6
                Client side JS uses the visitors CPU to save Server Res
              • 6
                It let's me use Babel & Typescript
              • 6
                Easy to make something
              • 6
                Can be used on frontend/backend/Mobile/create PRO Ui
              • 5
                Promise relationship
              • 5
                Stockholm Syndrome
              • 5
                Function expressions are useful for callbacks
              • 5
                Scope manipulation
              • 5
                Everywhere
              • 5
                Client processing
              • 5
                Clojurescript
              • 5
                What to add
              • 4
                Because it is so simple and lightweight
              • 4
                Only Programming language on browser
              • 1
                Test2
              • 1
                Easy to learn
              • 1
                Easy to understand
              • 1
                Not the best
              • 1
                Hard to learn
              • 1
                Subskill #4
              • 1
                Test
              • 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.1M 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

              289.8K
              174.2K
              6.6K
              Fast, scalable, distributed revision control system
              289.8K
              174.2K
              + 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.2M 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.3M 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