Showpitch 103: Our Cloud Ecosystem and Our Platform

Last week we reviewed the technology we’re using to build Showpitch. This week we’re going to present the ecosystem that has emerged from that technology and what the Showpitch Platform looks like as a result.

Let’s start by breaking down the ecosystem at a high level:

  • Showpitch Core
    • Platform Application Stack
    • Configuration Service
    • Agent Services
    • Service Manager
    • Administrative Service
  • Consumer Services
  • Business Services
  • Clients
    • Web Clients
    • App Clients
    • 3rd Party Clients
  • Media Stack
    • Repository
    • Connectors
    • Distribution Channel Partners

Taken together this comprises the Showpitch Ecosystem from a very high level. An immediate take away here is that Showpitch is more than just a website. What we’ve built is a full platform.

Further, as covered in the prior post, this ecosystem lives in the cloud, implemented on top a variety of cloud technologies, service providers, and partners.

So let’s get into the details for each of the components of this ecosystem.

Showpitch Core

This is, as the name implies, the core of Showpitch. That is, many of the other components of the Showpitch Ecosystem rely on this core, leveraging the business logic implemented within to drive business processes and provide services.

Platform Application Stack

The Platform Application Stack contains the aforementioned business logic for Showpitch. Any request that passes through the Showpitch Platform subsequently uses this component to determine what to do or how to do it.

Configuration Service

The Configuration Service takes typical application configuration to another level. With this service configuration across application components, and even environments, can be shared while allowing settings to be specified for individual application instances. Further, the Configuration Service allows settings to be updated without having to redeploy application components, meaning the behavior in and across Production can be changed from a simple Management UI and take effect without impacting Production service.

Agent Services

Agent Services are vital to the performance of Showpitch. Agent Services off load the work from the platform services, allowing the heavy lifting for long running tasks, or large task sets, to run “in the background” without taking up processing and memory resources from the real time services that Showpitch provides. Agent Services also allow for multi step work flows to be executed, which enables much more complex business logic to run on the Showpitch Platform.

Service Manager

The Service Manager is the other half to the Agent Services. While the Agent Services perform all the background processing and work flow for the Showpitch Platform, the Service Manager allows control of the Agent Services. It handles monitoring, stopping, starting, updating, and deploying the Agent Services. One of the most interesting features built into the management of Agent Services is that they can be newly configured or reconfigured using the Configuration Service, and then spun up in multiple instances across the same machine or multiple machines, which allows for horizontal scaling to handle load.

Administrative Service

The Administrative Service puts management capabilities directly into the hands of the Business Owners. CMS Tools, Item Lists, and Advertisement Managers, among others, allow the Business greater control over the content presented on Showpitch.com. This is important for maintaining the messaging the Business wants to put forward on the site.

Consumer Services & Business Services

The Consumer and Business Services are provided by the Showpitch API. This API provides all functionality for the Showpitch Platform. For instance, the API is what provides all the functionality for the Showpitch.com Web Client. It’s also used by the Administrative Service and for many of Showpitch‘s internal systems. This API serves both Consumers of the Showpitch Platform and Business integration partners, like Joint Venture Partners and Media Distribution Partners.

Clients

The Showpitch Platform has, and will have, many different types of Clients.

Web Clients

The most obvious example of a Web Client is Showpitch.com. Other Web Clients are planned in the future. Web Clients communicate with the Showpitch Platform via the API, as a Consumer of the Platform. Through these Clients Users can interact with Showpitch through any modern browser, including on desktops, tablets, and mobile devices.

App Clients

In addition to Clients on the Web Showpitch also supports native App Clients, on any type of device that can consume a REST API, which includes just about every device out there. App Clients aren’t simply restricted to native Mobile Apps either, but can potentially include Desktop Applications, Game Console Applications, TV Applications, and even IoT devices.

3rd Party Clients

3rd Party Clients include other platforms and systems that consume services from Showpitch. These Clients may consume both Consumer and Business services from the Showpitch Platform.

Media Stack

Of special note among the Consumer and Business services available on the Showpitch Platform are services related to Media. These are of such great import that they’ve been separated from the rest of platform and given their own domain.

Repository

The core of the Showpitch Media Stack is the Media Repository. This is where all Media provided to Showpitch resides, regardless of how it was provided. Without this store, there’d be no Media to consume. This Repository is provided by a combination of JW Platform and Cloud Files. The Repository is secured, requiring authorization from the Showpitch Platform to gain access.

Connectors

Where the Repository provides for storage of the Media on Showpitch, Connectors allow for access to this Media. As mentioned previously, access to the Media is secured, requiring authorization from the Showpitch Platform to gain access. The Connectors all integrate with this authorization scheme, allowing for various types of access to the Media depending on the Connector and the authorization available. This can include viewing the Media, downloading the Media, or even uploading or changing the Media.

Distribution Channel Partners

If the Repository is the store for the Media, and the Connectors provide access to it, then the purpose of the Distribution Channel Partners is to provide Media to Showpitch or distribute the Media available on Showpitch to various platforms and channels. The first Distribution Channel Partner we have is Showpitch.com itself. Here one can browse the Media on Showpitch, upload new Media to the platform, view the Media directly, and download it as well.

This sums up the Showpitch Ecosystem from a high level. Over several future posts we’ll start to dive in to each part of the ecosystem, providing specific stories of implementation within these components. Is there a part of the ecosystem you want me to cover first? If so please leave a comment below. And keep checking back!

<< Back to Showpitch 102
On to Showpitch Advanced Part 1 >>

Advertisements

Showpitch 102: Let’s Review the Tech

So where we left off we covered what Showpitch is and what we’re setting out to accomplish. Now I want to review what technologies we’re using to accomplish our goals, and highlight a few of them in particular.

In the last post I had said I wanted to share what I’ve been working on for the past two years. Well Showpitch is not the entirety of that two year period. To start with, I only joined the Showpitch team about a year and a half ago. Even then, I didn’t step in to the architectural role for the product for another 3 months or so after that.

Before that was even the case though I had been working on other projects, exploring and experimenting with some of the technologies, patterns, and practices that we ultimately put in to place at Showpitch. For the first 3 months I was there, I was there as a Front End team member, helping to build some of the components that we were going to use for the UI at that time.

But then there was change in the team structure, and direction of the company, and as I had experience leading, architecting, and developing projects before I was asked to take over as the Senior Software Architect overseeing and implementing a from scratch reboot of the entire Showpitch platform, along with my good friend and colleague Eric Johnson (better known as EJ!) as a peer and partner in charge of the Front End team. (And lots of other stuff as well! In fact, if you’re all lucky, EJ may be convinced to add a guest post to this blog some day!)

By this point Showpitch had been developing this platform for quite a while. So with an entire reboot from scratch upon us, and expectations from stakeholders, partners, and other industry members ahead of us, one thing was very clear: We needed to move very fast. But with the vision that was in mind, we also needed to do things right, and keep where we were going in mind. We had to follow of the wisdom of two great minds: to be mindful of the future, but not at the expense of the moment.

This lead us to the list of modern approaches that appeared in the first post. Let’s dive in a bit more now and talk about the technologies, practices, and partners that we choose to implement and support each of those approaches.

Being Cloud First, Cloud Native

When we talk about being Cloud First, Cloud Native, what does that mean? For us it meant that we simply didn’t have the budget, people, or time to buy our own hosting hardware and software, nor to setup our own company computing environment. And that’s been to our benefit. Everything we do at Showpitch is on the Cloud; collaboration, development, management, and especially hosting.

We work with, leverage, and consume Cloud services from providers such as:

This is not an all inclusive list of the Cloud technologies and partners we leverage, but it should server as an example of just how cloud oriented Showpitch is.

Leveraging partner solutions where possible and economically viable

In addition to the Cloud First, Cloud Native approach, we also wanted to focus on delivering features and functionality with our platform, and not spend time building what others have already built, and probably built better. This stands in contrast to what I consider the NIH anti-pattern (Not Invented Here).

To that end we looked outside our team first for implementations of many of the features we have, including:

Again, this is not an exhaustive list. But the purpose of this approach was to start up quickly, and use the expertise and tools that each of these partners made available to support our development. We could have easily gotten caught up in building solutions for each of these components ourselves, but instead we were able to focus on developing our own features.

Leveraging technologies that allow for Rapid Application Development and Iteration

This was a very important approach to consider, perhaps the most important, as we had to demonstrate feature progress immediately. To the that end we needed to select application components that supported building this system very quickly. What we decided on were things like:

These are some of the technologies that have allowed us to quickly prototype, apply proof of concept, development, test, refine, iterate, and successfully deliver. I’d especially like to call out Unity and ReSharper here. Unity has been massively important to the design of our application and has allowed us to accomplish in handfuls of code what would have been entire projects otherwise. I will be posting specifically on a couple examples of this throughout this series. And ReSharper has increased productivity for our team across the board. Its Code Navigation and Refactoring capabilities alone have saved us dozens if not a couple hundred man hours across the team, and this includes the Front End Team who works largely in the realm of JavaScript (Yeah, ReSharper does that!).

Running on a very Lean and Agile Management approach

All of these technologies, tools, and partners would amount to naught though if we were constantly getting in our own way, or if we were constantly in a state of analysis and requirements gathering. As such we’ve had to find a fine line between staying organized and getting work done. So while our team oscillates between a Scrum-like approach and a KanBan-like approach, we still attribute a couple of key technologies to our success:

This combination of technologies has allowed us to work while distributed geographically, on a Cloud Oriented basis, without having to invest significantly in office management nor technology management.

Using only what we need, when we need it, and being ready to scale when the time comes

Through the use of everything we’ve already discussed we’ve been able to design for and adhere to this last approach. Almost of the Cloud partners and technologies we use are built to scale on demand, or near enough, that we don’t need to make huge up front commitments or investments. In fact we’ve switched providers and partners several times during the past year, sometimes in as little as day, with no disruption to our ongoing development!

All of this ties together in to a success story culminating in the live Showpitch site today, and continues to enable and empower our success moving forward.

Do you want me to focus on any of these technologies in future posts? If so, please leave a comment below! And stay tuned for more posts that will go in to greater detail about these technologies, practices, and approaches in particular!

<< Back to Showpitch 101
On to Showpitch 103 >>