Course: Introduction to Versioning Environments With Vagrant

A few weeks ago I shared a presentation about Partitioning and automating development machines. Check out the post for a synopsis of how you can improve your development workflow.

This summer I authored a course with Pluralsight to help you get started. The course walks you through the basics of getting started with Vagrant to create reproducible, virtual environments. It’s designed for you to follow along with hands on examples:

  • You’ll take Vagrant for a spin to get a feel for using the tool.
  • You’ll incorporate Vagrant into a web development workflow with an example of hosting an nginx website.
  • You’ll learn how to version the definition of your environments through your version control system.
  • You’ll learn how to mesh a development workflow with a production release process with an example of developing your own hubot. You’ll also learn how to release your hubot to the cloud using Amazon Web Services.
  • You’ll learn how to work with virtual Windows environments. The first example demonstrates how to test releasing a .NET application with Web Deploy. The second example shows how to create and test scripts to configure Windows environments with PowerShell. The second example shows that these techniques are great for system administration, not just development.
  • Last, you’ll see how to use Vagrant to support local development databases with an example of using MongoDB. Local development databases help keep developers from stepping on each other’s toes, but traditionally can be a burden to setup.

All along the way I share benefits, talk about trade-offs, and provide further avenues of exploration.

Enjoy!

Introduction to Versioning Environments With Vagrant

If you can’t estimate, who can?

Hourly billing runs rampant in many professions. The justification is often rooted in the idea that those doing the work don’t know what all will be necessary. In order to make ends meet, so called experts charge by the hour. But, if an expert doesn’t know what it will take, how in the world is their customer supposed to know?…

What if we said investment instead

Successful projects rely upon worthwhile investments. Worthwhile investments require agreement about objectives, how to measure success to know when we’re on the right path, and what the outcome should be worth. Unfortunately many organizations use projects as a means to produce intermediate results. Intermediate results that don’t have an understood correlation to any particular outcome. Often the result of a…

“While we’re at it”

Occasionally an opportunity will arise to make an investment with the potential for an astronomical return. Sometimes these investments will literally fall into your lap. Usually it takes work to carve out a worthwhile investment. However you arrive at a potential investment, so long as the potential return is significant (10 to 1), avoid the temptation to posit “while we’re…

Obsessing over details is a sign

When approaching software development from a focus on outcomes and results, instead of efforts and billable minutes, I’ve noticed an early indicator. When conversations digress into nuances of what will be accomplished, it’s usually a sign of a lack of value. Although the outcome appears lofty, in reality it isn’t. When investments are extremely valuable, people tend not to obsess…

Don’t chase quantity

Many custom software development firms provide boutique services to customers. They’re often smaller firms and that’s a good thing. They’re a small group of highly talented individuals working to produce valuable results for customers. Unfortunately, many boutique firms aspire to grow their business by scaling personnel. This is like trying to move bigger boulders by hiring more people to push.…

Leveraging remote expertise

If you employ remote workers, or you want to extend the opportunity for employees to work remotely, no doubt you have reservations. There are many benefits in employing partial and full time remote workers. You have expanded access to expertise and talent that local markets often cannot provide. You can expand your reach to serve customers in local markets of…

Investing in seven figure software, tip #1

There are opportunities abound to better serve your customers and improve your organization with investments in custom software. There are also countless ways to burn money in the process on marginally valuable software. This will be the first in a series of tips to avoid pouring your money down the drain and instead invest in software with an exponential return…

Broadening storage perspectives

Experimenting with the unknown broadens your perspective of what you’re comfortable with. Learning highlights what you may not be aware of, what you take for granted. A prime example is moving from a dependence on relational, SQL based storage systems into the land of NoSQL. When you swap out something as fundamental as how information is stored, you’ll naturally run into challenges. And they’re good challenges to face. They’ll reshape how you approach storage in general, for the better.

For example, if you move to a document database like MongoDB you will be forced to consider how information is partitioned within your system. Consequently, when working with relational databases, you’ll bring some of this partitioning back which can have significant benefits even in a relational model of storage.

Here are some additional benefits you will experience:

  • Develop software faster
    • Eliminate the ceremonial nature of describing new data structures and additions to data structures.
    • Less friction between application models and storage formats.
  • Increased software longevity
    • Better design because you no longer have to invest in costly translation layers to mediate between application models and storage formats. This translation has historically led to sub optimal application models, which often lead to issues down the road.
    • Distinct partitioning of your system, which lends itself well to scalability.
    • Partitioning simplifies your application models too.

Recently, I gave a talk about the benefits of partitioning and automating development machines which is a separate topic. But, we used a MongoDB development machine as an example and toward the end, discussed some of the reasons why alternative storage solutions like MongoDB are a valuable tool to add to an organization’s repertoire. Part 2 of the recording focuses on the benefits of leveraging MongoDB.