Sign In

Mark Allen

Head Of Engineering at Taplytics

Mark Allen is a seasoned professional currently serving as the Manager of Solution Architects at Hootsuite. He holds a BSc degree from The University of British Columbia.

Mark has a rich professional background and has held key positions in various organizations. Prior to his current role, he was the Head of Engineering at Taplytics and Director of Engineering at Tigera, Inc. Moreover, he has significant experience working at Hootsuite in roles such as Manager of Solution Architects and Senior Manager of Software Development.

Before his tenure at Hootsuite, Mark has worked in several technology companies in leadership and development roles. He was the Director of Software Development and Senior Software Developer at MineSense Technologies Ltd. Additionally, he has served as a Senior Developer at Mobio Technologies, Inc. and a Senior Principal Consultant at Impac Services Inc.

Mark Allen also has experience in entrepreneurial ventures, having been the CEO and Co-Founder of FData Management Software Inc. Furthermore, he has a background in technology sales as a Senior Principal Consultant. Additionally, he has held C-level positions such as CTO at Tantalus Communications Inc. and XO at Toronto Brigantine Inc.

Highlights

Oct 2 · linkedin

My laptop isn’t responding anymore.

I posted about the things that get me out of a flow state, https://lnkd.in/gBcv-Aa7, not having enough resources is the first one.

I described it as my local development machine being brought to its knees because it is overloaded with processes. I'm not talking about too many open Chrome tabs but multiple databases used by memory-hungry Java microservices that are needed to run the API or web app I'm working with. Nothing slows me down for hours more than a machine that won't respond to commands.

I’ve made three attempts to solve the problem of running everything on my laptop to develop a SAAS application.

First, I created a remote development environment for my team to share these resource-heavy services. This works if I work on a top-level service like a web app or API. It breaks down in 2 cases; first, if I’m working on a microservice, I need to run the applications that calls it, meaning I'm running more services than I need to, therefore not always solving the problem. Second, ownership became an issue; it’s not an integration environment, so ops doesn’t own it. It’s just for developers, but there are no resources to support it.

My second attempt was to use cloud resources and build a remote development environment on commodity hardware sized to run everything. With a robust infrastructure as code system, this works well and solves the problems of the shared development environment. The problem is that not all developer tools work in this configuration. If you use an IDE, you’ll need to Remote Desktop in, and this doesn’t work for everyone on my team and can slow them down, the opposite of what I’m trying to accomplish.

The third try was to leverage my use of kubernetes to run most of my applications. I am using tools like Codezero Technologies Inc. to run services in my shared kubernetes cluster and expose them as local ports, providing the same feel as running them locally but without the overhead. It also provides the benefit of being able to run only the services I’m working on locally and the rest in the cluster. So I can work on a microservice and have the web app that calls it run the cluster and route traffic to my local machine.

So far, the third time's a charm for this type of flow. I can develop and run a single service locally with the rest in the Kubernetes cluster, but all the other components feel like they are running locally. Since I’m leveraging off a shared Kubernetes cluster, I get economies of scale as I add more developers to the team.

#devops #softwaredevelopment #cloudcomputing #kubernetes

Jul 31 · linkedin

CD issues? Lead the charge.

In my previous post, https://lnkd.in/gmkGcc6A, I discussed how to get to continuous delivery. Now some of the most challenging work begins, getting rid of all the roadblocks that are preventing continuous deployment.

  1. Fix what is preventing continuous deployment. Whether it's a slow build pipeline, flakey tests or hard to-manage local development environment, invest in your team's workflow. Do whatever it takes to remove the barriers to making it happen.

The biggest complaint I hear from developers is that their productivity is negatively impacted by things they perceive as outside their control. Such as flakey tests or a flakey test environment. Slow or under-resourced build servers. A local development environment that doesn't work for them.

These are all valid complaints but are entirely within the control of your team. Too much focus on getting the next release or feature out is missing the forest for the trees. If you want to speed up something, you have to invest the time and effort in finding where it's not working and fixing that.

Since you are talking about CD all the time and now doing continuous delivery, give your team the time and space to fix the things that make their life difficult. Have them fix the flakey tests. Invest in larger machines for the build process. Tear down and rebuild from scratch the local development environment.

Lead the charge. Start to look at your DORA metrics for deployment frequency and lead time. Dig into why the numbers are what they are. Gather the data on build times, determine which tests fail the most and run the development environment as your developers do. Be the one who identifies these issues in your retrospectives, pull out the wins and identify the remaining bottlenecks.

In the next post, I'll dive into how to collect all the DORA metrics for your team and show how they directly correlate to getting to CD.

#cicd #devops #softwaredevelopment #cloudcomputing #startups

Mark Allen
Add to my network

Location

Vancouver, British Columbia, Canada