Skip to content

    Latest Posts

    Diagnosing and Fixing Memory Leaks in Python

    Drew Wright

    Fugue uses Python extensively throughout the Conductor and in our support tools, due to its ease-of-use, extensive package library, and powerful language tools. One thing we've learned from building complex software for the cloud is that a language is only as good as its debugging and profiling tools. Logic errors, CPU spikes, and memory leaks are inevitable, but a good debugger, CPU profiler, and memory profiler can make finding these errors significantly easier and faster, letting our developers get back to creating Fugue’s dynamic cloud orchestration and enforcement system. Let’s look at a case in point. In the fall, our metrics reported that a Python component of Fugue called the reflector was experiencing random restarts and instability after a few days of uptime. Looking at...

    Read More

    Continuous Delivery with Fugue and CircleCI

    Drew Wright

    For Fugue, providing documentation is about more than just creating a high-level reference for information. Our documentation content ranges from examples of creating complex infrastructure with Fugue to walkthroughs of integration with a number of popular devops tools in use today, which is what we’re here to talk to you about. So… why did we build this particular example? In short, we picked an integration with CircleCI as one of our examples because it is a great way to automate the build, test, and deployment processes. It provides integration with some of the most popular source code management systems like Github and Bitbucket, and is used by leading edge companies including Facebook, Kickstarter, and Spotify. Continuous integration (CI) speeds up development and release...

    Read More

    Why Write a Book?

    Drew Wright

    “It worked on my laptop!” Seven weeks into your latest project, you’ve gotten to the point where management wants a demo. Your first spike was run from a node server that you ran on your laptop. When another developer joined, you moved the environment to Vagrant so you could share an image. When the third and fourth bodies were assigned, you decided to save time by automating the installation with Chef. You’ve all been collaborating effectively for weeks and now you need to put it out on a cloud provider to give your stakeholders access. Your cloud infrastructure was set up by a different team with domain expertise on the platform. Sadly, that did not confer upon them a psychic ability to anticipate the networking needs of your Riak cluster. Nor did it allow them to anticipate...

    Read More

    A Holiday Season Kickoff at AWS re:Invent 2016 — Gifts From the Cloud

    Drew Wright

    We’re a couple of weeks out of re:Invent and its dizzying buzz—the slew of service and feature announcements, the industry tracks and community meetings, the Mini Cons, the integration and how-to session deep dives, the intensive networking, the mall of sponsors with every manner of product presentation … even festive bling from the ever-present registration DJ. We’ve had some time to digest what we saw and learned this time around and to think about a few of the more compelling offerings. In this post, we’re not going to recap the full laundry list of new services introduced or feature enhancements (many especially targeted at enterprise). Good overviews are abundant; here are ones from InfoQ, VentureBeat, and Rackspace. Instead, let’s zero in on a handful of provocative...

    Read More

    The Next-Generation Cloud CMDB: Ludwig Code

    Drew Wright

    In a recent report, Ovum described Fugue as "a CMDB for APIs." A configuration management database (CMDB) is a single source of truth for configuration of complex systems. This is a crucial aspect of Fugue, one where running your operations with Fugue offers a lot of value to you. Fugue's CMDB is an effect of our declarative model for configuration, built around our typesafe, compiled Ludwig language. The Fugue CMDB is not a proprietary store with a form-based interface; it is Ludwig code, managed in a VCS of your choice, like git or svn. That code is a declarative configuration of infrastructure (or other API) state. Once it is run as a process in Fugue, that declaration is made real and immutable with machine precision. In this way, a well-managed body of Ludwig compositions and a...

    Read More

    Architecting a Serverless Web Application in AWS

    Drew Wright

    Here at Fugue , the Web Team is a small but spirited minority—in favor of JavaScript, 60 frames per second , and keeping our DevOps simple. We like experimentation and new approaches to computing that favor substance and elegance over fad and bling. For some time, we’ve been using AWS Lambda with SNS topics and votebots , but we hadn’t tried anything big with it. Until now. The Serverless framework gave us the push we needed. Our goal? To power an application useful to a business function via an API built with Lambda and API Gateway , harming no EC2 instances in the process. Let’s rewind for just a moment to give a brief explanation of AWS Lambda. Like IBM OpenWhisk, Google Cloud Functions, and Azure Functions, it's a service “for executing code in response to specific events such as a...

    Read More

    Regions Beyond Regions: Global Cloud Infrastructure Expansions

    Drew Wright

    Think about the cloud as a massive global computer . That paradigm—with developers and users managing hyperscale cloud services within its framework—means tapping into a kind of pattern recognition. Cloud data centers, substations, and fiber are physical components of a cloud motherboard. Genuine cloud operating systems like Fugue can be built. Cloud processes can be represented with a pid equivalent. And so on. This year, 2016, is a year of expansion. Below, you see an aggregate mapping of a wide swath of Earth’s cloud “hardware”—installed by Amazon Web Services, Microsoft Azure, Google Cloud Platform, and IBM/Softlayer. All of it, arguably, can be and eventually will be manipulated as parts of the same machine. Shown are 78 global regions with cloud data centers for the four...

    Read More

    It’s Not All Unicorns and Rainbows: Managing Slack for Productivity

    Drew Wright

    Slack is amazing. We, here at Fugue , are an engineering-centric organization distributed across three offices with several developers located in one-off locations around the world. Having a real-time, easily accessible hub for communication has helped us stay gelled as a community. It’s a technical resource, a sounding board, and a water cooler all in one. But Slack is not all unicorns and rainbows. Like many other organizations, we’ve discovered that replacing email (for the most part) with Slack has brought some challenges. As the company grew, the volume of discourse on Slack became unwieldy. Channels propagated and we were faced with Slack bloat. The problem was not just one of noise, it was one of uncertainty as well. What Kind of Uncertainty? You see, important conversations...

    Read More

    Testing Migration: Shifting from Manual to Automatic

    Drew Wright

    Testing is the process of executing a program or system with the intent of finding errors. — Glenford Myers, The Art of Software Testing, 1979 Testing is any activity aimed at evaluating an attribute of a program or system. Testing is the measurement of software quality. — Bill Hetzel, The Complete Guide to Software Testing, 1983 Testing is a concurrent life cycle process of engineering, using and maintaining testware in order to measure and improve the quality of the software being tested. — R. Craig and S. Jaskiel, Systematic Software Testing, 2002 Here at Fugue, we’re building a system that automates and enforces the operation of your cloud infrastructure. It’s powerful, resilient, and easy to use. Under the hood, this system is made up of a collection of services...

    Read More

    Our Functional Future or: How I Learned to Stop Worrying and Love Haskell

    Drew Wright

    This fall, I had the chance to dive headfirst into functional programming languages. It’s not a journey for the dabbler or the faint of heart, but it's one that’s worthwhile. I'd been aware of functional programming and Haskell in particular for some time, but my attempts to learn it had been less than successful. The problem wasn’t lack of resources; there are some good ones out there, e.g., Learn You A Haskell For Great Good and What I Wish I Knew When Learning Haskell. Maybe it was the novelty of functional programming to me or my lack of dedication, but even after substantial effort, I still couldn't understand the first line of code in our Ludwig DSL compiler. It was disappointing. Programming languages aren’t new to me. Having recently completed a Ph.D. in computational fluid...

    Read More
    Fugue Developer

    Free Cloud Security for Engineers

    • Visualize your cloud infrastructure
    • Run policy checks and get feedback
    • Detect change and eliminate misconfiguration
    GET STARTED CONTACT SALES