What is Fastly and what are its top alternatives?
Fastly alternatives & related posts
related CloudFlare posts
When I first built my portfolio I used GitHub for the source control and deployed directly to Netlify on a push to master. This was a perfect setup, I didn't need any knowledge about #DevOps or anything, it was all just done for me.
Over the weekend I decided I wanted to know more about how #DevOps worked so I decided to switch from Netlify to Amazon S3. Instead of creating any #Git Webhooks I decided to use Buddy for my pipeline and to run commands. Buddy is a fantastic tool, very easy to setup builds, copying the files to my Amazon S3 bucket, then running some #AWS console commands to set the
When I made these changes I also wanted to monitor my code, and make sure I was keeping up with the best practices so I implemented Code Climate to look over my code and tell me where there
other issues I've been super happy with it so far, on the free tier so its also free.
I did plan on using Amazon CloudFront for my SSL and cacheing, however it was overly complex to setup and it costs money. So I decided to go with the free tier of CloudFlare and it is amazing, best choice I've made for caching / SSL in a long time.
I recently moved my portfolio to Amazon S3 and I needed a new way to cache and SSL my site as Amazon S3 does not come with this right out of the box. I tried Amazon CloudFront as I was already on Amazon S3 I thought this would be super easy and straight forward to setup... It was not, I was unable to get this working even though I followed all the online steps and even reached out for help to Amazon.
I'd used CloudFlare in the past, and thought let me see if I can set up CloudFlare on an Amazon S3 bucket. The setup for this was so basic and easy... I had it setup with caching and SSL within 5 minutes, and it was 100% free.
related Amazon CloudFront posts
Back in 2014, I was given an opportunity to re-architect SmartZip Analytics platform, and flagship product: SmartTargeting. This is a SaaS software helping real estate professionals keeping up with their prospects and leads in a given neighborhood/territory, finding out (thanks to predictive analytics) who's the most likely to list/sell their home, and running cross-channel marketing automation against them: direct mail, online ads, email... The company also does provide Data APIs to Enterprise customers.
I had inherited years and years of technical debt and I knew things had to change radically. The first enabler to this was to make use of the cloud and go with AWS, so we would stop re-inventing the wheel, and build around managed/scalable services.
For the SaaS product, we kept on working with Rails as this was what my team had the most knowledge in. We've however broken up the monolith and decoupled the front-end application from the backend thanks to the use of Rails API so we'd get independently scalable micro-services from now on.
Our various applications could now be deployed using AWS Elastic Beanstalk so we wouldn't waste any more efforts writing time-consuming Capistrano deployment scripts for instance. Combined with Docker so our application would run within its own container, independently from the underlying host configuration.
Storage-wise, we went with Amazon S3 and ditched any pre-existing local or network storage people used to deal with in our legacy systems. On the database side: Amazon RDS / MySQL initially. Ultimately migrated to Amazon RDS for Aurora / MySQL when it got released. Once again, here you need a managed service your cloud provider handles for you.
Future improvements / technology decisions included:
Caching: Amazon ElastiCache / Memcached CDN: Amazon CloudFront Systems Integration: Segment / Zapier Data-warehousing: Amazon Redshift BI: Amazon Quicksight / Superset Search: Elasticsearch / Amazon Elasticsearch Service / Algolia Monitoring: New Relic
As our usage grows, patterns changed, and/or our business needs evolved, my role as Engineering Manager then Director of Engineering was also to ensure my team kept on learning and innovating, while delivering on business value.
One of these innovations was to get ourselves into Serverless : Adopting AWS Lambda was a big step forward. At the time, only available for Node.js (Not Ruby ) but a great way to handle cost efficiency, unpredictable traffic, sudden bursts of traffic... Ultimately you want the whole chain of services involved in a call to be serverless, and that's when we've started leveraging Amazon DynamoDB on these projects so they'd be fully scalable.
StackShare Feed is built entirely with React, Glamorous, and Apollo. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house Node.js rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our Rails web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a Heroku environment, we needed to split out our front-end application into a separate repo in GitHub. The driving factor in this decision was mostly due to limitations imposed by Heroku specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes.
Related to this, we need a way to "deploy" our frontend changes to various server environments without building & releasing the entire Ruby application. We built a hybrid Amazon S3 Amazon CloudFront solution to host our Webpack bundles. A new CircleCI script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in Redis so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build & release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!
#StackDecisionsLaunch #SSR #Microservices #FrontEndRepoSplit
related MaxCDN posts
When my SSL cert MaxCDN was expiring on my personal site I decided it was a good time to revamp some things. Since GitHub Services is depreciated I can no longer have #CDN cache purges automated among other things. So I decided on the following: GitHub Pages, Netlify, Let's Encrypt and Jekyll. Staying the same was Bootstrap, jQuery, Grunt & #GoogleFonts.
What's awesome about GitHub Pages is that it has a #CDN (Fastly) built-in and anytime you push to master, it purges the cache instantaneously without you have to do anything special. Netlify is magic, I highly recommend it to anyone using #StaticSiteGenerators.
For the most part, everything went smoothly. The only things I had issues with were the following:
- If you want to point
wwwto GitHub Pages you need to rename the repo to
- If you edit something in the
_config.ymlyou need to restart
bundle exec jekyll sor changes won't show
- I had to disable the Grunt
htmlminmodule. I replaced it with Jekyll layout that compresses HTML for #webperf
Last but certainly not least, I made a donation to Let's Encrypt. If you use their service consider doing it too: https://letsencrypt.org/donate/
The reports and controls were also considerably better.
related KeyCDN posts
Platform Update: we’ve been using the Performance Test tool provided by KeyCDN for a long time in combination with Pingdom's similar tool and the #WebpageTest and #GoogleInsight - we decided to test out KeyCDN for static asset hosting. The results for the endpoints were superfast - almost 200% faster than CloudFlare in some tests and 370% faster than imgix . So we’ve moved Washington Brown from imgix for hosting theme images, to KeyCDN for hosting all images and static assets (Font, CSS & JS). There’s a few things that we like about “Key” apart from saving $6 a month on the monthly minimum spend ($4 vs $10 for imgix). Key allow for a custom CNAME (no more advertising imgix.com in domain requests and possible SEO improvements - and easier to swap to another host down the track). Key allows JPEG/WebP image requests based on clients ‘accept’ http headers - imgix required a ?auto=format query string on each image resource request - which can break some caches. Key allows for explicitly denying cookies to be set on a zone/domain; cookies are a big strain on limited upload bandwidth so to be able to force these off is great - Cloudflare adds a cookie to every header… for “performance reasons”… but remember “if you’re getting a product something for free…”