Terraform

Terraform

DevOps / Build, Test, Deploy / Server Configuration and Automation
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)
20 upvotes·1 comment·1.6M views
Dev Suryawanshi
Dev Suryawanshi
·
January 19th 2020 at 10:11AM

Great information

·
Reply

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)
33 upvotes·4 comments·2.1M views
Franco Austin
Franco Austin
·
November 22nd 2019 at 10:54AM

Relly like the architectural artefact, what did you use to produce it?

·
Reply
Sung Won Chung
Sung Won Chung
·
November 24th 2019 at 9:57PM

I used draw.io. Free and easy to use!

https://www.draw.io/

·
Reply
SANJEEV TOORA (UK)
SANJEEV TOORA (UK)
·
January 29th 2020 at 8:55AM

Architecture looks great! Just out of curiosity, did you have unit and integration testing components for Terraform e.g. Terratest, Kitchen Terraform, Sentinel?

·
Reply
Sung Won Chung
Sung Won Chung
·
January 29th 2020 at 3:17PM

I did NOT. This was to demo the mechanics. Not something for robust production. Would love if you can make a pull request for some of those tests ;)

·
Reply
Avatar of pedroarnal
CTO at La Cupula Music SL·
Shared insights
at

Our base infrastructure is composed of Debian based servers running in Amazon EC2 , asset storage with Amazon S3 , and Amazon RDS for Aurora and Redis under Amazon ElastiCache for data storage.

We are starting to work in automated provisioning and management with Terraform.

READ MORE
8 upvotes·655.8K views
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
19 upvotes·1 comment·4.1M views
Jon Senterfitt
Jon Senterfitt
·
January 29th 2021 at 7:07AM

But why not just use Contentful?

·
Reply
Avatar of ydbhondekar2407
Product Manager | SaaS | Traveller ·
Needs advice
on
DockerDockerMongoDBMongoDB
and
RabbitMQRabbitMQ

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
16 upvotes·473.4K views
Replies (8)
Recommends
on
WebRTC
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
14 upvotes·1 comment·8.7K views
Nikhil Gurnani
Nikhil Gurnani
·
November 4th 2020 at 7:34AM

I absolutely second this recommendation! WebRTC is a must for apps that have high amount of audio / video streaming.

·
Reply
Avatar of BigBugLord
SDET at Ledningkart·
Recommends
on
Docker
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
10 upvotes·8.5K views
View all (8)
Avatar of sureshlivewell
Sr. Systems Technical Speciali at BMC Software·
Needs advice
on
AnsibleAnsible
and
TerraformTerraform

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 upvotes·55.6K views
Replies (5)
Avatar of the-maldridge
Systems Engineer at BetterHelp·
Recommends
on
Terraform
Terraform
at
()
  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
6 upvotes·1.4K views
Recommends
on
Terraform
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 upvotes·804 views
View all (5)
Avatar of pramodssupra
Founder at Supra Software Solutions·

We are an application development firm helping our customers develop web & mobile application. We are currently using GitLab for CI/CT/CD. However, we are looking for something more modern, advance & futuristic that will still be in use even after 10 years of supporting the latest technologies/servers of the time. Someone mentioned about Terraform. Any thoughts about which one would be right one to adopt or just continue with Gitlab?

READ MORE
7 upvotes·49.3K views
Replies (2)
Avatar of kajanth
Principle Consultant at cloudcomapre·

Stick to gitlab you can still use all the other tooling along with it. Terraform is for infrastructure a d they are different things. I use a combination of gitlab, terraform among other tooling.

5 upvotes·5.7K views
Avatar of ben-moss
Director at Kaizen Path Consulting·
Recommends
on
GitLab
GitLab
Tekton
Tekton

If you're self-hosting GitLab, then check you're on the latest version since you mentioned it not being modern (in what ways is it not modern?). GitLab is updated very regularly and IMO is definitely a candidate for the best due to it's all-in-one (low cost of integration) design.

I have experience with many CI/CD tools (going right back to CruiseControl!), but not much experience on some of the newer ones (e.g. Spinnaker / Concourse). Recently I came across Tekton, which a lot of good people are rating, so that might be worth a look if you're doing hybrid/multi-cloud with Kubernetes, but I wouldn't replace GitLab unless you're facing some constraining factor that the GitLab team can't help you with - their feature delivery is pretty quick in my experience.

READ MORE
4 upvotes·2.3K views
Avatar of kamilkowalski
Lead Architect at Fresha·

Coming from a Ruby background, we've been users of New Relic for quite some time. When we adopted Elixir, the New Relic integration was young and missing essential features, so we gave AppSignal a try. It worked for quite some time, we even implemented a :telemetry reporter for AppSignal . But it was difficult to correlate data in two monitoring solutions, New Relic was undergoing a UI overhaul which made it difficult to use, and AppSignal was missing the flexibility we needed. We had some fans of Datadog, so we gave it a try and it worked out perfectly. Datadog works great with Ruby , Elixir , JavaScript , and has powerful features our engineers love to use (notebooks, dashboards, very flexible alerting). Cherry on top - thanks to the Datadog Terraform provider everything is written as code, allowing us to collaborate on our Datadog setup.

READ MORE
3 upvotes·245.1K views