I want to understand how do guys manage your cloud infra and deployments
Hi Folks, I could use your help, I want to understand how you guys manage cloud infra & deployments at your companies I am currently working on setting up the infra tooling and just need your guidance

What type of infrastructure are you primarily using? Kubernetes clusters Standalone machines (EC2)

How do you manage deployments? Configuration management tools (e.g., Ansible, Puppet, Chef) Manual deployments GitHub Actions

What Infrastructure as Code (IaC) tools do you use, if any? Terraform CloudFormation Pulumi

Please go in as many details as you can want to understand what kind of setup is the most popular among the community?

Good question but it is like asking "How long is a piece of string" ? You need to provide more specifics to get more meaningful answers. "Cloud Infra and Deployment" could literally mean 100s of things depending on your requirements, tech stack, customer needs, traffic levels, workload types (consistent vs sudden bursts), database read/write requirements and many other factors.

Having said that, most of us generally use an existing PaaS or IaaS built on top of the biggest providers like AWS, DO, GCP, Azure etc. Some people use things like Terraform or Ansible Scripts or even plain old bash scripts or Makefile.

Whether you should use Kubernetes or not again depends on answers to the questions from my 1st paragraph.

For https://pinggy.io/ we have specific needs. In a nutshell, we use EC2 and VMs from other clouds with a bunch of shell scripts for automation.

We run VMs (EC2) instances and not containers. The reason is that the kind of traffic we serve is a very long lasting TCP connection. We do not want to stop containers without draining all traffic, which in this case takes days to weeks. As a result, EC2 instances are fine, since there is no need of upscaling and downscaling frequently either. The deployment is handled through our shell scripts. IaC is not required for the same reason - frequency of starting and stopping VMs is very less. We start VMs manually then trigger the deployment script.

CloudFormation templates and some simple bash scripts run via CodeBuild. Simple, flexible, reliable and well supported.

I’m deployment global (multi-homes) serverless stacks, mainly. IAM, DynamoDB, S3, Lambda, Step Functions and the like. It’s a bit tougher to make this type of system work since there are a mix of models for the services (DDB Global Tables vs S3 Bucket Replication) so there are at least two templates per service: one for the “global” stuff like IAM roles and DDB, and a “regional” one for Lambda, SNS/SQS, EventBridge and the like which gets imprinted in each supported region.

Would be nice to hear how the first step looks like as well. For instance, what comes after opening a new AWS account: what’s managed via code and what via the web UI, etc.
Bootstrapping a cloud estate is called "Day Zero". Tasks include things like creating the resources for an initial IaC statefile, which in turn is used to setup the scaffolding for larger deployments. Some day zero resources are temporary and can safely be removed.

Also initial high level "root" keys are created and safely stored away in case a break-glass emergency ever happens.

I just use Capistrano to deploy my Ruby app/code/workers to my servers via 1 line: 'cap production deploy'. I don't muck around with those other things like Terraform, Ansible, and Kubernetes (they're voodoo to me)
I've been using combination of nix, nomad and terraform for last few months (hetzner & aws). There are some rough edges but overall nice dx.
  • rrohn
  • ·
  • 3 weeks ago
  • ·
  • [ - ]
Standalone machines with Jenkins and TF
Young devs do not trust solid tried and tested feature rich tools such as Jenkins because it looks old school. This is actually sad to see.
Or they don't want to spend half their time managing that Jenkins ecosystem when some bash scripts and literally any other CI solution out there gives you very similar benefits for fraction of the effort.
My previous company also turned away from Jenkins to GitHub actions. I'm not an infra guy and the only complaint about the Jenkins pipeline is its slowness as it copies everything from the feature branch into the deployed branch, while only a few files were changed. But I don't think it's Jenkins' fault though.
  • rrohn
  • ·
  • 3 weeks ago
  • ·
  • [ - ]
I guess, whatever works for a dev.
I use Pyinfra.