We use CircleCI for #ContinuousIntegration. Workflows are configured via a simple yaml file and run inside isolated Docker containers. CircleCI runs ESLint, Brakeman, and RuboCop to enforce code quality and security best practices. It integrates with GitHub and Slack to notify us of build progress and pass/failure statuses.
We used LaunchDarkly for #StackDecisionsLaunch. Their #FeatureFlagsManagement system allowed us to continuously deploy new features behind flags that only we could access. When we set the feature live, it was a simple toggle on the LaunchDarkly dashboard. We later went in and removed any code checks for flags that were enabled for all users. LaunchDarkly also allows percentage based rollouts, and has features to target users in highly specific ways.
We migrated from Heroku Postgres to Amazon RDS for Aurora not long ago. The driving force behind the migration was the increased performance and cloud tuned PostgreSQL instances. Pricing was also a factor, as RDS delivers more value for the price. We have a staging and production cluster that can be scaled up or down as we need capacity. Snapshots, backups, and maintenance are handled automatically, though the timeframes are configurable. They offer automatic failover, and multi-az replication #StackDecisionsLaunch
DigitalOcean is used at StackShare for various tasks, such as serving Hubot and utility work. We have a few different testing environments, and keeping them up to date with fresh production data can be a nightmare to mange manually. DigitalOcean #CloudHosting has allowed us to automate those tasks in an easy way #StackDecisionsLaunch
Algolia powers many aspects of our feed and Stack Decisions. When you @ mention a tool or tag a topic, their #SearchAsAService engine delivers results quickly and accurately. #StackDecisionsLaunch
We use GraphQL and GraphQL Ruby to power our feed api. As we roll out more and more features using GraphQL we've split our Rails app into 2 separate worker pools. One set serves the web site and legacy apis, while the other serves only GraphQL requests for Apollo. This allows us to scale up easier over time to serve additional requests as more features are built out using GraphQL #StackDecisionsLaunch
I use Vagrant to build Railsbox. I base the final image off of another Vagrant base image Ubuntu to speed up build times. In the past I've used Packer to build the image, but installing Ubuntu from scratch takes too much time. Using a base VirtualBox image allows me to compose a Vagrantfile similar to Docker's "FROM image" command #devops #VirtualMachine #VirtualizationPlatform
We use Stream to power our feed and decisions products. We hook into their api using supplied Ruby SDKs that send records to their system when we create or update them. Their personalization feature allows us to tailor the feed experience for each user based on individual interests and engagement. #StackDecisionsLaunch