Terraform

DevOps / Build, Test, Deploy / Infrastructure Build Tools
Avatar of shosti
Senior Architect at Rainforest QA

We recently moved our main applications from Heroku to Kubernetes . The 3 main driving factors behind the switch were scalability (database size limits), security (the inability to set up PostgreSQL instances in private networks), and costs (GCP is cheaper for raw computing resources).

We prefer using managed services, so we are using Google Kubernetes Engine with Google Cloud SQL for PostgreSQL for our PostgreSQL databases and Google Cloud Memorystore for Redis . For our CI/CD pipeline, we are using CircleCI and Google Cloud Build to deploy applications managed with Helm . The new infrastructure is managed with Terraform .

Read the blog post to go more in depth.

READ MORE
Why Rainforest QA Moved from Heroku to Google Kubernetes Engine (rainforestqa.com)
13 upvotes1 comment478.9K views
Avatar of undefined

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

READ MORE
GitHub - sungchun12/iot-python-webapp: Live, real-time dashboard in a serverless docker web app, and deployed via terraform with a built-in CICD trigger-See Mock Website (github.com)
27 upvotes4 comments540.2K views
Avatar of undefined
Avatar of praveenm
Engineering Manager at Taylor and Francis

We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.

To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas

To build #Webapps we decided to use Angular 2 with RxJS

#Devops - GitHub , Travis CI , Terraform , Docker , Serverless

READ MORE
13 upvotes1.5M views
Avatar of undefined
Avatar of ydbhondekar2407
Co-Founder at weconnect.chat
Needs advice
on
RabbitMQ
MongoDB
and
Docker

Hi, I am building an enhanced web-conferencing app that will have a voice/video call, live chats, live notifications, live discussions, screen sharing, etc features. Ref: Zoom.

I need advise finalizing the tech stack for this app. I am considering below tech stack:

  • Frontend: React
  • Backend: Node.js
  • Database: MongoDB
  • IAAS: #AWS
  • Containers & Orchestration: Docker / Kubernetes
  • DevOps: GitLab, Terraform
  • Brokers: Redis / RabbitMQ

I need advice at the platform level as to what could be considered to support concurrent video streaming seamlessly.

Also, please suggest what could be a better tech stack for my app?

#SAAS #VideoConferencing #WebAndVideoConferencing #zoom #stack

READ MORE
12 upvotes49.4K views
Replies (8)
Recommends
WebRTC

You're going to want to look hard at WebRTC. It's what almost every realtime video service uses. The appeal is that it establishes a direct connection between peers so that the massive video bandwidth doesn't need to go through your backend. That aside, actor clusters will be the other technology that handle that sort of traffic well. It was popularized by erlang for telecom backbone, akka is another choice for actor systems.

Infrastructure wise, kubernetes would be a fine choice. Just make sure to look up some benchmarks for Container Network Interface (CNI) implementations that support high bandwidth traffic.

READ MORE
10 upvotes1 comment2.4K views
Avatar of BigBugLord
SDET at Ledningkart
Recommends
Docker

Kubernetes provides Auto-scaling whereas Docker Swarm doesn't support autoscaling. Kubernetes supports up to 5000 nodes whereas Docker Swarm supports more than 2000 nodes. Kubernetes is less extensive and customizable whereas Docker Swarm is more comprehensive and highly customizable. So if your main usecase is autoscaling go for kubernetes else Docker is always a good choice.

READ MORE
9 upvotes2.4K views
View all (8)
Avatar of sureshlivewell
Sr. Systems Technical Speciali at BMC Software
Needs advice
on
Terraform
and
Ansible

We use both these tools and are relatively new to them. We have a few questions:

  1. With Terraform, how are you handling changes done outside of Terraform in the Infrastructure?
  2. Are there any limitations or features that we miss in Ansible that Terraform can do? What are those?
READ MORE
6 upvotes10.6K views
Replies (5)
Avatar of the-maldridge
Systems Engineer at BetterHelp
  1. By policy, don't make changes outside of Terraform. This will slow you down a little to start with, but developing the culture of infrastructure via terraform pushes is part of what makes IaC successful. Obviously you should maintain break-glass capability, but doing all changes via Terraform will get you what you want.

  2. Its much better to think of them as two tools that complement each other. In Void Linux we use terraform for setting up resources on clouds and setting up SDN links between them. Provisioning hosts on the other hand is best left to a tool that is designed for that, and Ansible is a good tool for this. There are certainly points where I would rather have a single tool to rule them all, but I suspect in that case it wouldn't do either task particularly well.

If you absolutely had to pick one tool to do both use cases, I'd go with Terraform and have it invoke an ansible-like provisioning process.

READ MORE
5 upvotes810 views
Recommends
Terraform

While Ansible CAN do the stuff terraform does, it cant do it very well. But thats not its primary purpose. Ansible is for configuration management, but can do some orchestration, terraform is all about orchestration. Use the right tool for the job. Re changes outside of terraform, there should be none. Set up reporting to highlight these resources and highlight the need & advantages for using terraform to stake holders.

READ MORE
4 upvotes489 views
View all (5)