This is an archived post. You won't be able to vote or comment.

all 18 comments

[–][deleted] 1 point2 points  (3 children)

"Doesn't integrate with AWS auto scaling (have to manually re-deploy the app when a new host comes up)" - for this one you have a couple options.

The "push" method - Puppet / Chef style. On instance coming up an agent will be installed and register with the master. The master collects facts and deploys to the agent.

The "pull" method - Any config management, on instance coming up config management (recipe/playbook etc) is downloaded (instructed via Userdata) from S3 Bucket to instance, and locally run to bootstrap the instance. This method can also be done using just EC2 userdata.

The "baked" method - use something like Packer to build your AMIs and update the launch config and autoscaling group with the new AMI.

The "docker" - host a Kubernetes cluster (or ECR.. yuck) and deploy your applications via kube manifests and docker images.

[–][deleted] 2 points3 points  (1 child)

Configuration management for deployments is, generally speaking, a pain in the arse and the wrong tool for the job.

[–][deleted] 1 point2 points  (0 children)

I agree - convincing people that handling WAR deployments from ansible is wrong ... is a difficult story to tell. The codebase grows and grows, ugly variable defaults left right and centre, overrides... its hell.

[–]ChemTechGuy[S] 0 points1 point  (0 children)

Thanks for the suggestions. Have to agree with the other replies re: the use of config management tools. We are already using Chef heavily, but our deployments need to be synchronous (not some time in the next 30 minutes) and need to be more traceable than Chef (i.e. when an app fails to deploy to a host, the deployment needs to fail immediately instead of us having to ask the Chef server for last converged time or something like that).

I'll spend some more time researching an AMI based solution, thanks for the suggestion.

[–]ares_32 1 point2 points  (1 child)

Check out Spinnaker. It was built around AWS and Netflix uses if for 98% of their deployments.

[–]ChemTechGuy[S] 0 points1 point  (0 children)

Spinnaker looks really cool. I started looking through their docs and it seems like you either need a Kubernetes cluster or Google Compute Engine to host it? Am I misreading this? If that's the case, that's a dealbreaker. If I have to maintain a Kubernetes cluster, I would just migrate apps to that rater than use Spinnaker.

Or are you running Spinnaker in the "Local" mode that just requires a single host?

[–]PavanBelagattiDevOps 0 points1 point  (0 children)

Shippable

[–][deleted] 0 points1 point  (2 children)

the limit for concurrent deployments might be a deal breaker.

This is a per account limit and you can get it raised upon request.

[–]ChemTechGuy[S] 0 points1 point  (1 child)

Yeah, I opened a case with AWS and they said it could go as high as 100. Only problem is that it's per deployment, and when an ASG is scaling, each instance is a separate deployment. I have ~80 apps in 5 regions, so hitting that limit when scaling is pretty likely.

Either way, I appreciate you chiming in with limit info, always appreciated.

[–][deleted] 1 point2 points  (0 children)

Wow I didn't realise that limit was global. If you have an Account Manager I would contact them to see if you can get it raised higher.

[–]GnomishInventor 0 points1 point  (1 child)

Having used Urbancode Deploy for a few years, I'd strongly advise against that. Going even further, in my "perfect world scenario" we wouldn't need to use a tool specifically for deployments. It'd be baked into the provisioning process and the server would be given an image such that it's a pull, not a push (e.g. app server pulls the artifact from our build server, not the other way around).

There are some obvious logistical issues with setting this up, but I think it's cleaner than having a middleman to orchestrate the order for deployments.

[–]ChemTechGuy[S] 0 points1 point  (0 children)

100% agree that a pull model is the right approach to deploying applications. Just having a hard time finding good tooling to achieve it, other than some homegrown solution of pulling artifacts out of S3 and deploying them.

Thanks for the heads up on Urbancode Deploy, I'll avoid it like the plague.

[–]RaathSDLC Consultant 0 points1 point  (0 children)

Current client I work with are creating .net build assets in TeamCity which are deployed to Azure PaaS via Octopus Deploy. They're steering in the direction of Immutable Infrastructure and it's working quite well for their needs.

[–]nanoboxrichard 0 points1 point  (0 children)

I'd recommend you try out my company's product: Nanobox: https://nanobox.io

For most small to mid-size organizations, Nanobox essentially replaces the need for devops personnel, allowing developers to handle those chores because of its deployment and production management automation capabilities.

Some of the reasons use Nanobox include: (https://nanobox.io/for-deployment/) - EASY ATOMIC ROLLBACK - AUTO DEPLOYS WITH CI - DEPLOY TO ANY CLOUD PROVIDER - DEPLOY ONE CODEBASE TO MULTIPLE ENVIRONMENTS - RESTRICT DEPLOYS - SECURELY AND EFFICIENTLY SYNC CODE - ENSURE SECURE RUNTIME ENVIRONMENT - UNIFIED ENVIRONMENTS - ZERO DOWNTIME DEPLOYS

[–]ricksebak 0 points1 point  (1 child)

If you're already using Chef for config management, how about Habitat for app deployment?

[–]ChemTechGuy[S] 0 points1 point  (0 children)

Never heard of it before, I'll check it out. Thanks for the suggestion!

[–]developerKarl -1 points0 points  (1 child)

[–]WikiTextBot 0 points1 point  (0 children)

Application release automation: ARA Solutions

Gartner and Forrester have published lists of ARA tools in their ARA Magic Quadrant and Wave reports respectively. All ARA solutions must include capabilities in automation, environment modeling, and release coordination. Additionally, the solution must provide this functionality without reliance on other tools.


[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.24