The path to big

Mike Horsley

CEO VQ Communications

Hi, Mike again from VQ,

In my last post, I mentioned we’d been involved with Microsoft to produce a case study on how we used their new, cross platform, version of .Net. Here’s the article.

We were really pleased to have been asked, to say the least and think it reads really well.

Why is this new version of .Net so important for us? Here goes on trying to explain that…..

We get the obvious benefits of only needing to work with a single runtime; pre Acano Manager 2.2, we had the Windows version of .Net and the open source equivalent called Mono. From 2.2 onwards, we only have .Net Core. It’s from Microsoft and has been massively tested; it’s robust and fast.

In addition to that, we also get all the benefits of .Net Core being licensed under the MIT open source license. This is a bold and, I think, incredible, move by Microsoft. It means that companies like us can use the software from Microsoft in almost any manner we please; we can modify it or redistribute it. All at zero cost.

“the path to big”

The question, though is still, so what?

It increases the rate at which we can innovate and solve the problems faced by our customers. Our journey to adopting Open Source components started several years ago when we started using a JavaScript library (jQuery) in our user interface. That led us to use a package called Knockout; it enabled us to make the “Calls In Progress” page in our Conference Manager product dynamic and extremely responsive. The success of that drove our design requirements for the Acano Manager 2 User Interface. We ended up selecting Google’s Angular library (and that process pulled through a raft of other libraries and packages). We also started hiring Open Source expertise and have moved our development process onto the model used by the Open Source communities.

As Acano Manager 2.0 proceeded down the development path, eventually released and has had 12 months of further development, our adoption of Open Source technologies and ideas has continued. One of the key ones we’ve adopted is Docker. Docker is amazing although it took me months to get my head around it and fully understand what I was being told. Fortunately for me (and VQ), the idea to use it came from within the team (my contribution was to say “yes”). Initially, we used it as part of our test infrastructure and it enabled us to quickly spin up, test and then collapse test environments. Over the last 24 months, our adoption has increased and we now use it across the board.

 

In fact, we’re working on future versions of Acano Manager that use Docker to provide a multi-node, scalable, resilient architecture that can host really large workloads (2+ million minutes per day; 40+ million call minutes/month) with large numbers of users using the self-service portal.

“…multi-node, scalable, resilient architecture that can host really large workloads (2+ million minutes per day; 40+ million call minutes/month)”

Coming back to the original question, why is .Net Core such a big deal for us? The answer is simple: it provides the base upon which we can innovate at a speed which was previously inconceivable or completely unaffordable. We will use it and other state of the art components to deliver the big systems our customers are going to need as they grow.

regards

Mike

 

 

 

jQuery: https://jquery.com/

Knockout: http://knockoutjs.com/

Angular: https://angular.io/

AngularJS: https://angularjs.org/

Docker: https://www.docker.com

Microsoft Net Core: https://github.com/dotnet/core

Using Selenium Grid with Docker Compose

Selenium Grid combined with Docker is a simple but powerful solution to getting Selenium based infrastructure up and running quickly and easily.

Rather than dealing with the hassle of manually configuring and installing Selenium Grid we decided to go with Docker, it’s quicker and easier to use.

Our Selenium grid is used heavily for Protractor testing and to run our Jasmine unit tests on a constant cycle making sure we don’t introduce issues into our product.

The docker selenium image repositories are located at:

https://github.com/SeleniumHQ/docker-selenium

It includes instructions on how to get the containers up and running, which is great as it’s 1 docker run comamnd per container and you are up and running.

However, let’s take this further and combine it with docker compose to make using it even easier to use.

This compose file is designed to:

  1. Pull down the required images from docker hub for you.
  2. Allow easy create, start, stop and destroying the grid.
  3. Do the hard work of joining the containers together in a docker network (docker link is deprecated).
  4. Easily scale the number of Chrome or FireFox nodes.
version: '2'

services:
    selenium_hub:
        image: selenium/hub:3.0.1-aluminum
        container_name: selenium_hub
        privileged: true
        ports:
            - 4444:4444
        environment:
            - GRID_TIMEOUT=120000
            - GRID_BROWSER_TIMEOUT=120000
        networks:
            - selenium_grid_internal

    nodechrome:
        image: selenium/node-chrome-debug:3.0.1-aluminum
        privileged: true
        depends_on:
            - selenium_hub
        ports:
            - 5900
        environment:
            - no_proxy=localhost
            - TZ=Europe/London
            - HUB_PORT_4444_TCP_ADDR=selenium_hub
            - HUB_PORT_4444_TCP_PORT=4444
        networks:
            - selenium_grid_internal

    nodefirefox:
        image: selenium/node-firefox-debug:3.0.1-aluminum
        privileged: true
        depends_on:
            - selenium_hub
        ports:
            - 5900
        environment:
            - no_proxy=localhost
            - TZ=Europe/London
            - HUB_PORT_4444_TCP_ADDR=selenium_hub
            - HUB_PORT_4444_TCP_PORT=4444
        networks:
            - selenium_grid_internal

networks:
    selenium_grid_internal:

To use this docker compose file you could issue commands like:

docker-compose up -d to bring up the 3 containers and run as a background process.

However, @Yantrio, our Linux magician, a while ago came up with the idea of using Makefiles to help simplify the commands.

https://www.yantr.io/post/docker-makefiles/

Take this Makefile:

NODECHROME=5
NODEFIREFOX=1

.PHONY: default up down start stop scale

default: up

up:
    docker-compose up -d
    docker-compose scale nodechrome=$(NODECHROME) nodefirefox=$(NODEFIREFOX)

down:
    docker-compose down

start:
    docker-compose start

stop:
    docker-compose stop

# Have to restart hub due to it trying to connect to destroyed nodes
scale:
    docker-compose scale nodechrome=$(NODECHROME) nodefirefox=$(NODEFIREFOX)
    docker restart selenium_hub

It abstracts away having to remember to say put -d on the up compose command to run as a background process.

You simply can do:

make up to create and start all the containers

make down to stop and remove all the containers

make stop to just stop the containers

make start to just start the containers

But, the key win is how to scale the selenium grid.

You simply call:

make scale NODECHROME=10 NODEFIREFOX=5

To bring up another 5 Chrome containers and another 4 FireFox containers.

As docker compose will see you already have 5 Chrome containers and scale up to the requested 10 containers by making another 5.

Scaling down your grid is as simple as lowering the number of containers you require.

As the comment suggests, we restart the hub container to get around network connection timeout issues when containers disappear.

Simples!

NancyFx and CoreCLR

About three years ago when we were thinking about our long term product roadmap, we recognized that we were using a growing number of open source components, they worked really well and our customers really liked what they enabled (KnockoutJS – subsequently replaced by AngularJS – being the most visible example). We therefore started to recruit people into the team from the Open Source world with the intent of increasing our use of Open Source innovation and processes. We’ve been incredibly fortunate in the people we have been able to attract; the influence of them on our product has been enormous. Jonathan Channon (@jchannon) joined us about 2 years ago; he’s a contributor to the NancyFX project and was key to our decision to make NancyFx a core component of our next generation product. NancyFx gives us blazing performance, a really clean architecture, in-house expertise and complete control of the source stack for our solution. The value of this decision has been demonstrated numerous times as the next generation of our product has gone through design and then field beta programs; Nancy has performed really well and in-house expertise into its working has been invaluable.

During the latter part of 2015, we were back on the old topic of roadmap planning, architecture and the requirement to build the scalable, fast and robust platforms required by our customers as they transition through into self-service video conferencing and unified communications. These systems are starting to get big and are going to get bigger. Like, seriously, big. The prospect of a common .Net runtime that ran on Linux and Windows and provided the level of robustness we love on Windows made a transition to CoreCLR extremely attractive.

Some time ago, Andreas (@TheCodeJunkie) posted a blog about funding to enable Nancy development. Jonathan circulated the blog and that got us thinking; the principal blocker for us getting to CoreCLR was NancyFx support. We could wait for it to happen or we could help make it happen and have more control on the outcome. Being moderately control-freak by nature, we decided to take the ‘help make it happen’ path. Working with tretton37 and Andreas would enable us to get NancyFx onto CoreCLR and we could give something back to the NancyFx team and the wider community.

We are really pleased with how the project is going; our testing on CoreCLR is showing the level of robustness on Linux we need. This is a critical investment for us and a major enabler for us moving forward. We’ll be posting more updates as things progress.

Check out the blog post from Jonathan discussing his thoughts and a blog post from tretton37 about our relationship.

 

How VQ Conference Manager helped BCS Global slash its operating costs

BCS GlobalAbout four years ago we started working with BCS Global, a provider of managed video conferencing, telepresence, unified communications and collaboration services. Ranked as the 15th top technology company in the UK on the Sunday Times Fast Track of 2012 (an annual list of the world’s fastest growing companies), it has a truly global offering and now has video conferencing network presences in Toronto, New York, Shanghai and Hong Kong as well as the UK.

When we first met, they were looking for ways to automate operations and improve efficiency as part of their relentless pursuit of the market’s most competitive full-service solution. Once they’d met VQ, I’m happy to say, they didn’t need to look any further, and I recently spoke to BCS Global’s CEO, Clive Sawkins, to discuss the project and the benefits VQ’s Conference Manager has brought to his business.

Challenge

Clive Sawkins, BCS Global

Clive Sawkins, BCS Global

BCS Global’s users across the world are able to ‘meet’ instantaneously via its global B2B video exchange system. However, the challenge BCS faced when it contacted us was how to continue to successfully grow the company and its services by being first to market with new technology, while still remaining cost-effective in an increasingly competitive market.

Key to reducing operating costs without having a detrimental effect on BCS’s established level of service delivery was for the company to identify areas that could be made more efficient through automation.

“Our operators could be working with up to six different interfaces to provide video conferencing services, which was neither efficient nor scalable in the mid- to long-term,” Sawkins said. His goal was to reduce operator interfaces to only one, which would simultaneously increase service delivery and productivity and improve customer service, while also increasing process automation, especially call launching and management.

Solution

A BCS Global Operator

A BCS Global casino online operator

After researching the market extensively, our Conference Manager was deemed the ideal solution as it

fulfilled BCS’s three main concerns: integration with its existing software (including billing features), a user friendly front-end dashboard and the ability to scale and integrate with new technology, thereby future-proofing the company’s existing infrastructure.

Although at the start of the project Conference Manager already had all of the essential components required to meet BCS’ needs, because it was being rolled out on such an enormous scale this meant we had to upscale the architecture of the software to manage multi-device control between multiple locations.

Benefits

Four years on, BCS Global has seen an increase in its operators’ customer facing time by 50 per cent. It has also seen rapid business growth, which has averaged more than 25 per cent year-on-year, yet the time it takes to train new agents has been significantly reduced now there is just the one management system to get to grips with.

“By getting the software to do the work of managing multiple MCUs, and building in high degrees of automation, our personnel can now focus on what they should be doing – delivering customer service,” Sawkins says.

With this improved efficiency the company has slashed operating costs and now boasts a full-service communications portfolio at a price point that, in Sawkins’ words, “the others simply cannot reach”.

Looking forward

Sakwins believes that VQ’s API made it particularly different from the competition: “We knew that success was dependent on making software talk to software in order to minimise operator intervention; and VQ had demonstrated they were able to build a reliable, high performance architecture and have a flexible, robust API to deliver the solution BCS required”.

Through our API we were able to get BCS Global’s CRM to drive VQ Conference Manager directly as a component. This meant that when the sales team closes a deal, for instance, the features of that agreed service package are automatically provisioned from the CRM into the service and billing side of things.

This automation has enabled BCS Global tighter control over its operating costs which has supported its goal of further growth. As video becomes a more mainstream business communication tool, BCS is able to continue scaling whilst maintaining efficiency.

Sawkins also believes that the infrastructure and software architecture BCS has in place, thanks to VQ’s video conferencing tools, has given it the edge over its competitors because it is able to easily integrate new technology and get solutions to market much faster.

“BCS Global’s success to date has been underpinned by a philosophy of never standing still but instead embracing new technology,” he said. “From traditional video to unified communications services – which have grown to almost a third of our business – we have never been slow to adopt the latest solutions and so we appreciate working with companies that share this attitude”.

We at VQ are delighted that BCS are getting these benefits from VQ; when we set out, we had a set of objectives and one was to enable high degrees of productivity gain to be achieved via software-to-software integration. It is always really rewarding when something as significant as this turns out successfully.

If you want to find out how your business could benefit from VQ Conference Manager, please get in touch.