Blog | Tombola Careers
We've partnered with AWS
As mentioned in my previous article on durable teams, over the years tombola has grown significantly. When I joined 7 years ago there were maybe 20 developers looking after 3 territories. Today we have over 150 developers and engineers looking after 6 territories.
From a technology and infrastructure perspective the evolution has been rapid. 3 or 4 years ago we migrated our on-premises infrastructure into AWS. Initially it was a “pick up and shift” exercise and a gradual migration to AWS native services. We have made huge progress and have seen huge benefits being 100% hosted in AWS and we’ve learned a lot along the way.
One of the big learnings was the cultural shift that being cloud native would cause. One of the most notable shifts was how our developers engaged with the underlying infrastructure. The lines between developers and cloud infrastructure are blurred heavily by AWS. In some cases, there is no distinction.
This has presented some interesting challenges. Our developers and infrastructure engineers are forced to work in a very collaborative way with automation being key.
Previously our infrastructure engineers would operate largely behind a help desk – “Can I have a new server?”, “Can you open port x?”. There wasn’t much crossover between our development and infrastructure teams and likewise with their respective development projects.
Nowadays our developers and infrastructure engineers form multi-disciplined development squads – everyone is very much closer to the product.
This is all great for our product. We see much better collaboration and innovation. Much more valuable conversations are being had with an improved open dialog and we have reaped the benefits of this as a business. Because of this, we believe that we, as a business, produce some of the most highly skilled AWS engineers in the region.
So how do we keep the skill levels and the engagement levels high with our engineers?
One thing we have is a unique culture around technology. Technology decisions are never “top down”. We make a point in empowering our teams to build solutions in the best way they can using the right tools for the job – and any tool is an option.
There are lots of benefits in this from a business perspective:
- We are always innovating at the front line of technology development.
- We have some of the most highly engaged and highly motivated technologists in the region.
- Our engineers get huge exposure to the latest tech allowing them to develop and learn quickly.
- We have a great working relationship with AWS
There are, however, some challenges that should be acknowledged:
- Our architecture can sometimes fragment
- Development of our engineers requires constant investment.
While we may call these last points “challenges” tombola are happy to invest in and manage these challenges because we believe the benefits hugely outweigh the challenges.
As an example of how we invest, we have just partnered with AWS to deliver a deep dive training course to almost 50 of our engineers. Everyone gets a place on this course, from our most junior new starters through to our most senior tombola stalwarts. We believe in creating a baseline of knowledge within the organisation. Everyone is trained to a certain extent using broad training initiatives like this one and then personal development is overlaid on a case-by-case basis. This creates a well-documented “minimum” level of knowledge and skill in AWS that can be assumed, along with a common vocabulary.
We believe there isn’t a better place to be an engineer in the North East. We have a unique technology culture that benefits the business as much as the individual engineers. We’re proud of this. We believe we are a great place to work, whether you’re a principal engineer with years and years of experience or whether you’re a graduate fresh out of university. You will learn and develop at tombola working alongside some of the best engineers in the region, all while being supported by tombola.
Come and join us
We have exciting plans for growth and are recruiting at all levels of experience to support that, if you would like to consider an opportunity at tombola please take a look our current available roles.
Introducing Durable Teams
To prepare ourselves for our ambitious growth plans we are about to introduce some changes to how our developers and product managers work on our platform projects at tombola.
We define platform as anything, from a software development perspective, that isn’t a game. This includes things like safeplay tools, player signup, security etc.
We’re considering this an evolution in how we work rather than a fix or restructure. tombola has achieved LOTS since the days of it being hosted from a couple of old desktop PCs plugged into a dusty cleaning cupboard in the basement of our first office. We love to celebrate this fact but with all of this success and growth we need to acknowledge and be comfortable with the challenges that are presented.
When I joined tombola 7 years ago, slightly wet behind the ears with, probably, more hair ?? , there was one platform development team with maybe 10 platform developers and there were 4 or 5 main stakeholders around the business looking after 3 territories. We mostly fit in one or two rooms so getting the right piece of work done at the right time was a lot simpler.
Currently we have 3 platform teams totalling more than 40 platform developers, looking after 6 territories (8 if you include the territories we’re due to launch in soon) with stakeholders almost too numerous to count! This poses many challenges for the platform teams, stakeholders and their projects.
To prepare ourselves for our ambitious growth plans we are about to introduce some changes to how our developers and product managers work on our platform projects at tombola.
The old way - Projects
Now is probably a good time to talk about the platform teams project backlog. It’s a bit like A&E on a Saturday night except that the nurses and doctors are platform developers and product managers, and the patients are projects from stakeholders. The patients that aren’t considered emergencies by the nurses and doctors tend to have a ridiculously long wait and because of this some patients don’t even bother turning up to A&E even though they probably should.
All of our development teams worked in an agile way but agility was limited by a completely un-agile project backlog.
There are numerous challenges presented with how we currently schedule projects:
How do we decide which project is done before the rest of the projects in the queue? Should it be the one that’s been there the longest? The project from the stakeholder that is the most vocal? Or the project with the biggest impact on the business?
Because of the sheer number of projects in the backlog the teams never feel comfortable taking time to measure the success of a project when it is launched. There is an implicit pressure to quickly move onto the next project – mainly because of the sheer volume of projects and the length of time some of them have been waiting.
We really don’t like to refer to our people as “resource” but let’s be grown up here. To deliver a project successfully we need developers, infrastructure engineers, designers, testers and product managers and we don’t have infinite numbers of people in our teams. Worse still is the ability for a large important project to consume all of the people we have. A project’s ability to consume the people in the teams is a difficult thing to measure and predict.
The new way - Durable teams
Durable teams are a way of aligning people with the product that the players see. It is not aligning development resource to specific projects or stakeholders. It’s a collaborative and agile approach to product development that aims to keep ownership and decision making close to the product.
We have divided the non-game side of the tombola product into several areas and in each area we will form a squad. Membership of this squad is going to be durable but not permanent. These are the durable teams.
Reporting lines will not change and the divisions will remain structured in the usual way:
How will this help?
Because we have sliced up the overall product into areas, we think it makes managing the above challenges easier.
Prioritisation becomes much more focused. We no longer have to prioritise certain initiatives in one area of the product against initiatives in another area of the product.
We think durable teams builds in much more ownership of a focused roadmap. There is no more pressure to forget about a recently launched initiative and move onto the next one from the huge raft of ancient projects. Because stakeholders are members of the durable teams, we will have the luxury of having stakeholder engagement baked in from the beginning and we think this will form a culture of continuous improvement.
Durable Teams give us the opportunity to discuss “resource” in a much more focused way. Those all-consuming projects have a much smaller blast radius – only within their product area. We can have conversations about recruiting new people focused in a specific area without impacting the other durable teams. With Durable Teams, we actually hope to lose the word “project” from our vocabulary completely.
When does Durable Teams start?
Durable Teams is not something that can be kicked off overnight. We are currently going through a process of mapping business stakeholders with durable teams and fleshing out objectives and roadmaps in each team. I like to think of this process as spinning up the wheels of Durable Teams.
It should be said that durable teams is a new direction of travel in terms of how we work. It’s the starting point not the final destination. We expect durable teams to evolve significantly. The vision is that we will build a new culture of ownership and collaboration around platform projects. With the following principles in mind:
- Focus on group strategy, objectives and KPIs
- Maximize ownership
- Minimize competition for resource and priority
- Reduce the need for signoff
- Continuous improvement
It should also be acknowledged that durable teams will come with its own challenges. We will discover areas or projects that don’t seem to have a home. We think this is a good thing because it forces us to deal with this kind of ambiguity head on.
It’s an exciting change to how we work full of opportunity and we hope that everyone will see the benefits very soon.
Why we’re moving to a hybrid way of working - A message from James Beard, COO.
Last week marked one year of remote working for our permanent office-based staff at tombola. There’s still a lot of debate ongoing around the future of working from offices or remotely, and some technology companies have said they will shift to a new, or different, way of working once the coronavirus crisis is over. The advantages this brings to the tech companies mean a reduced need for real estate investment and infrastructure, and talent can be hired from anywhere in the world. The potential advantage to the people is the reduction of commuting times and a positive impact on work life balance.
We’re huge believers in the value of “place” in an organisation. We feel when we physically come together it is much more of a shared experience. Those accidental and impromptu meetings, overheard conversations, the impact of body language, mentoring, learning, development and relationship building that goes beyond work is invaluable to the culture of a business. Then there’s the less tangible aspects of identity, belonging and a visibly shared endeavour. As well as the cultural aspect we’re also very passionate about investment in the North East and we believe there is amazing talent right here on our doorstep.
Having said that we also recognise that for our people the flexibility and choice that working from home provides is something that they really value. So, after much careful consideration we’ve decided to move to a hybrid model of working for our office-based teams, both in the UK and Europe (our +300 people strong Chat Moderator and Customer Service teams have been working from home for the last 15 years already). This will mean people have the flexibility, if they so wish, to work for up to 2 days from home, with the other 3 days being based in the office. We also want to ensure that when our people are working from the office they have that strong sense of belonging, so we’re ensuring that everyone will continue to have their own dedicated desk which is theirs whether they are in the office or not. We think this new way of working gives a good balance between maintaining the culture of tombola that we’re so incredibly proud of, and what we believe makes us unique, whilst giving people flexibility and choice.
We’re also going to be looking at ways we can make our existing office environments the best they can be to facilitate this new way of working.
We have an incredibly passionate and loyal team who ultimately have made us what we are today, so it’s crucial they feel happy and fulfilled at work. We know that having a happy team is key to creating the feel-good factor that helps us be the best we can be as a business. We’ve already been blown away by how our people have adapted to a new way of working in the last year and I’m confident that this hybrid model is a positive change that will help contribute to the continued growth and success of tombola.
tombola Wellbeing - Paul Cheetham, Wellbeing Manager.
Wellbeing means a lot at tombola. Not just for Mental Health Awareness Week (MHAW) but for all year round.
In the last 12 months we’ve made a heck of a lot of progress towards our aspiration, which is:
“ To support our people, enabling them to be the best, healthy, version of themselves for life and for work. We want to create a great place to work where our people are given the environment, tools and skills to support and manage their own health and wellbeing”.
Our team of employee wellbeing advocates have been instrumental in making a real difference for their tombola work mates in many different areas such as financial wellbeing, physical health, nutrition, company culture and finally mental health. In the last year, their work has led to the introduction of a new 24/7 Employee Assistance support service, the introduction of new flexible features for our holiday benefit and a new financial support partnership, to name but a few things.
So….on to MHAW….
tombolaMind is a big part of our overall wellbeing plans and it felt right to put in place a week-long programme of different activities to promote and normalise people looking after their mental health.
So what have we been doing?
There have been a number of blog posts from many of our people, giving each person’s experiences of how they are trying to look after themselves and encouraging people to be kind to others. We even created our own e-cards to make it easier for people to say thank you!
We also made sure everyone knew about the main places to go to if they needed help accessing healthcare, counselling, support or information.
We also managed to secure Mental Health Matters to put on two webinars for our people on emotional resilience which went down really well with our team.
Our regular online Coffee café, which is our weekly social half hour for people to pop into, was turned into a Kindness café where people shared their tales of lovely things others have done for them and, with a bit of gentle persuasion, also what they had done to be kind to others.
So, lots of people doing lots of things!
I love my job as wellbeing manager here at tombola. Whilst we don’t always get it right, we are certainly putting the effort into making us the best we can be when it comes to wellbeing. That’s not down to me – it is powered by our people! Don’t believe me? Then when don’t you join us and find out for yourself!
Starting a new job during a global pandemic!
Starting a new job is always daunting. Starting a new job during a global pandemic - that’s just a new level!
Not being able to meet any of my new team, not being in the office and not being able to sample that amazing food at lunch. I knew that starting at tombola was going to be a bit tricky.
The first few days were great to settle the nerves that I had. I was able to meet my new colleagues through teams and it really settled my nerves. Everybody seemed to go out of their way to get in touch and welcome me. My initial days were full of really useful and informative inductions about the history of tombola and how it has become the company it is today.
Something else that really blew me away was how seriously the company values and cares about the safety of the players and how it prioritizes the safety and wellbeing of its players before any profits. The safeplay induction was a great way to understand how the company promotes its players to play safely from the amount of tools that are available so the player can play safety and a whole team dedicated to safeplay.
Overall my first weeks here at tombola have been really great and despite everything that is going on, I already really feel part of the team. I’m looking forward to meeting everyone properly!
Sweden Session Alerts and Time Limits
I would like to talk about the Sweden Session Alerts and Time Limits project we recently shipped from tombola International.
In preparation for the launch of tombola Sweden, we were presented with regulatory requirements that gave us the opportunity to take our responsible gambling tools to another level. We needed to allow players to limit the amount of time they could spend on our website (daily, weekly or monthly), and occasionally show them a message telling them how long they had been playing and how much money they had won and staked during the current play session.
This could be broken down in to a few tasks:
- Track the logged in time of our players
- Allow players to set a time limit
- Enforce these limits; The player should be logged out when their limit had been reached and denied login to the site until the next day/week/month
- Send and show alerts to players
We decided to develop this functionality standalone so that it wouldn’t directly depend on anything in our current .Net Framework driven website. This allowed us to use .Net Core, something that I had been excited to get stuck in to again since I had recently attended a workshop on building applications with .Net Core delivered by some amazing developers from Microsoft. This would also prove to be a very cost-effective solution.
Being an AWS customer, we were able to make use of a number of their products that helped us to have a working prototype up and running rather quickly. We built Docker images of our services so were able to deploy and run them in ECS (Elastic Container Service). We made use of SQS (Simple Queue Service) to communicate between services and used Parameter Store for our runtime configuration.
A huge benefit of developing in this way is that it allows us to offer this functionality to the websites of the other territories we operate in, without needing to modify code. We can simply deploy new instances of these Docker images and they will pull down their own country specific configuration from Parameter Store. They are stateless.
One thing that we were missing was a way to take the alerts that we were producing on the backend and deliver them to the player in real-time. We chose to use SignalR for this as it fit our needs perfectly and had a version supporting .Net Core.
Our Game team provided us with some great looking Vue.JS components to show these alerts in an eye-catching way. Here is one of them
I think we have provided a good, solid, portable solution. The addition of SignalR as a way to communicate with our players is a first for International Platform and opens up some exciting possibilities for our future developments.
Codegarden is like no other conference, we were greeted with high fives and entered a very friendly, happy and tech savvy community.
The conference was fantastic, a diverse set of talks, some very technical some very soft, there was loads of scope to get together with the community and share ideas. I got a huge amount out of the experience and thought it would be useful to document my key learnings in this blog.
There was a big focus on Umbraco v8 (we are on v7.6!), v8 being the new shiny version of Umbraco. The main focus of the release has been to tidy the codebase, anyone who has worked on the older codebases can see the massive value in that. They have reduced the number of projects and lines of code and use solid modern architecture principals lacking in previous releases, like dependency injection and having clear patterns used consistently.
They also added a few new features the only one of real note is Variants, essentially this allows you to have multiple languages for content, useful for an international business!
There was a big focus on extending Umbraco using packages, one of the really interesting packages is PreFlight, this lets you set content rules which are validated before content is published. You can define content rules which is massively powerful and a very interesting idea.
One thing that was very apparent from looking at all the amazing work the community is doing is that we don’t do open source very well. We have made some pretty amazing extensions to Umbraco that we could share with the community we could also benefit from all the amazing plugins and improvements that are being developed. Umbraco is really key to what we deliver, it accelerates our content delivery and has already made an incredible impact, we need to get more active with the community to gain even more benefits.
As a brand-new team lead I wanted to take advantage of some of the talks that had a bit of a softer focus, one very interesting talk was about teaching in technology. This is something I think we all struggle with, sharing knowledge is hard and creating a culture that is always striving to learn new things is a big challenge. A key takeaway was how we talk to each other, we often comment on how smart/clever/brilliant somebody is when they do something well this makes it harder for them to take risks least they fail and fall off the pedestal. Commenting on their effort and complimenting their hard work has a much better result. If we don’t challenge ourselves and take risks, we stagnate and don’t develop. The other takeaway was to be aware of your mindset, recognise fixed mindset behaviours and try to move towards a growth mindset. I’ll not copy and paste all these behaviours, I will however copy and paste a link.
Dotnet core was a big topic of the conference too, the Umbraco Core team are working hard on making the transition with minimal disruption. I hosted an open space session with the team to discuss their approach, we too are thinking about how we can move to Dotnet core and it was really reassuring to hear that they are using very similar approaches to what we are planning. We challenged each other’s ideas and I think we all came away with a better understanding of the road ahead of us.
Getting out of the office and listening to talks and sharing ideas is a great way to challenge yourself and think beyond the day to day development work that fills your week. It refreshes you, gives you great ideas and is a catalyst for innovation. We don’t need to go all the way to conferences to do this though, if we regularly step away from work and think and collaborate it will kickstart a flow of creativity and innovation. I know there are many of us that do this and benefit from it but many of us feel like we can’t step away from our work which is a cultural issue we can improve.
Another massive benefit was having a few beers with my colleagues in other teams, getting to know them and finding out about their challenges and joys within their teams was fun and useful.
tombola at NDC London
This year’s conference talks ran from 30th January until 1st February 2019; it included a large number of speakers, holding talks on a variety of topics that ranged from subjects that we, as developers, encounter each day, to the future direction of our field.
The opening keynote of the conference was presented by Hadi Hariri, a notable developer at JetBrains. Hadi talked about the ubiquity and availability of data in our connected world, and how we as service consumers, either willingly (and sometimes unknowingly) share our data. Such as, for example, through our daily interactions with social media, we provide a vast amount of data to service providers, who in turn may allow third parties to access that data to derive certain conclusions about us as individuals.
Many service providers offer their services for free, which on the face of it, it great for us as consumers. However, as Hadi highlighted in his talk, the “service” provided to consumers in this case is not the “product” being sold; it is in fact ourselves, or rather, our data, that is the “product” to be traded.
The keynote touched upon some Orwellian ideas around data misuse and the idea of our data being the product to be traded and sold. In the extreme, without full transparency and oversight of service providers, and individual control over data, our willingness to voluntarily share our information in exchange for “free” services could have the potential to result in a bleak future for our society. Hadi highlighted the social credit score that is currently being implemented by the Chinese government as an example of how data can be used by governments and organisations to control populations. Scary stuff!
The keynote was a fascinating opening talk for the conference, and certainly gave me plenty to think about.
Having listened to the talk for an hour or so, and having taken on-board the issues that were highlighted, almost all of the attendees (myself included) immediately decamped to the exposition hall to exchange their data for tons of “free” swag!
Two talks stood out most for me on the first day of the conference: the first was presented by Roy Derks titled “GraphQL will do to REST what JSON did to XML”; the second was a quick runthrough of CSS Grid, presented by Amy Kapernick.
Roy’s talk about GraphQL was of particular interest. I felt that his overview of the technology gave enough of an insight to envisage how GraphQL could have an immediate benefit to our API-driven project work at tombola.
GraphQL is a technology currently in use by a number of high-profile organisations, such as Facebook, GitHub, and Pinterest. The idea behind GraphQL is that it enables service consumers (e.g. client applications) to query a well defined data structure in order to retrieve only the data that is significant for that application.
In the current world of RESTful APIs, we define a service endpoints that return well defined data structures. Sometimes, however, a service must support multiple consumers: one consumer may require a certain subset of the data provided by the service, while another may require an entirely different subset. Over time the requirements of each respective consumer may change, requiring that the service expose more data than is necessary. This problem is typically solved by versioning the RESTful API, and is also the point at which problems may begin to occur. For example, the service codebase may become fragile or difficult to maintain, supporting multiple versions of the API over time may have ownership cost implications for the business, and deprecation of older versions of the API may cause difficulties across multiple services and applications.
GraphQL solves the RESTful API versioning problem by allowing the service to extend the data structure definition without breaking existing consumers. Moreover, since consumers only receive the data that is queried, they do not receive more data than is required for that application.
Way back in the bad old days of building web front-ends, developers would employ the use of HTML tables to organise the layout of their pages, sometimes resulting in pages with tables nested within tables. Needless to say this would lead to an unmaintainable mess. Between then and now, things have progressed greatly; we’ve moved away from HTML tables for layout, to floating DIVs, to Flexbox, and now to CSS grid.
Flexbox is a great CSS tool that allows us to build flexible layouts that flow across the page, but can sometimes be cumbersome to use in order to create grid-style layouts. Amy’s talk showed how CSS Grid helps to solve this problem. CSS Tricks has a fantastic guide if you’re interested: https://css-tricks.com/snippets/css/complete-guide-grid.
My standout talk for day two of NDC London 2019 was about the future .NET SPAs using Microsoft Blazor by Steve Sanderson.
Blazor allows us run .NET Core client-side in the browser on top of WebAssembly. The pre-release changes to .NET Core allow assemblies that target the .NET standard library to be natively compiled to WebAssembly (instead of MSIL), which can then be served to the client browser and executed locally. Coupled with the recent development of Razor Components (similar to Razor views that we use in our ASP.NET MVC applications), means that we will soon have the ability to build client-side applications using C#! With all of the the obvious advantages of having a single codebase that this entails, such as the ability to share code between client and server.
After Steve’s talk, I felt really excited about the possibilities of building new client-side applications with C# and eventually moving away from the JS stack.
Daniel Roth‘s talk “Introducing Razor Components in ASP.NET Core 3.0” was a great complement to Steve’s talk.
The second day of NDC was rounded off by Guy Royse‘s WebAssembly talk. WebAssembly is a stack based byte-code language that closely mimics the behaviour or machine executable code, but does so in the sandboxed environment of the browser. It is a platform that allows developers to write applications in languages such as C/C++, Rust, and C#, and execute that code in the browser.
The talk ended with Guy writing a native WebAssembly application live on stage – a task not for the faint-hearted because (i) it was a live demo! and (ii) because writing applications natively in WebAssembly is difficult!
The third day and final day of NDC London 2019 was a bit of a mixed bag, however, the standout talk for me was given by Scott Hanselman. I’m certain that there are many developers at tombola who are familiar with Scott Hanselman, or who may have read his blog.
Scott’s talk was much less about Microsoft’s tech stack, and much more about a problem very personal to himself. Scott Hanselman has been a type-I diabetic for most of his adult life, and as such, he must continually monitor his blood sugar levels. His talk started by describing the difficulties of living with diabetes, and about the products and services that a number of pharma companies provide in order to collect and analyse blood sugar levels. Whilst the these products can easily collect and analyse data from users, it seems that the pharma companies are not so keen on allowing users access to their data. In response to this, Scott and others in the community have developed software and created hardware “hacks” in order to access and analyse their data, so that more informed and accurate decisions based upon their blood sugar levels can be made.
Data captured from Scot’s blood analyser is processed by an app on his smartphone, which in turn, passes it to a backend service through a web API. This same API is then able to push out notifications to other connected devices and applications. For example, Scot had developed an app for his smartwatch that alerts him whenever a dip in his blood sugar is detected. He’d even written a powershell plugin that shows his blood sugar level in his command prompt!
Whilst Scot’s talk primarily focused around the difficulties of living with type-I diabetes, it did highlight some really interesting and innovative technological solutions to the problem, and definitely gave plenty food for thought.
There were a lot of good talks at NDC London 2019 (and some not so good one’s too). There were a number of topics covered that I felt could have the potential to be useful at tombola for new and existing projects in the short term, such as GraphQL, and others that I felt could be useful in the future, such as Blazor.
AWS meetup at tombola house
Here’s the slides of my talk “tombola – a tale of config”
tombola hosted their first AWS NE meetup at our brand new tombola house building here in Sunderland.
Here’s the slides of my talk “tombola – a tale of config”
(notes are attached to the slides if you download the presentation) :
Click to Download
AWS Task Scheduler
Before I begin
Let me confess, I am not a great writer of words, more of code. So blogging, in general, is quite a challenge for me.
Why did we make a tool?
As a part of our 2020 roadmap, we are trying to offload as much processing intensive work from our monolithic architecture as possible.
This is to make as much room as we can to reach our 100K active daily players.
A part of this means not creating any new windows scheduled tasks or SQL scheduled jobs unless absolutely necessary. A good alternative is to use AWS Lambda functions or Docker containers to run as tasks.
Currently, we schedule these tasks in terraform, which means the scheduling is in code. This is starting to become a concern as we don’t have a consolidated view of what tasks run and when. Also, at present, we don’t have a means of quickly disabling or pausing a task if it becomes problematic.
Picture this scenario: You have a task that does a very simple job; sends out emails to customers who are opted in, that task is scheduled, now imagine if you want to change the schedule, you would have to do a code change and push it to production. Now I imagine if you send out, let us say a monthly player statement instead of a weekly one, you would have to deploy a whole new task for it? Whereas the only difference would be one word and the change in the schedule. To achieve this without having to do code change we proposed a solution in the form of a tool that will give us the ability to quickly and easily create, disable, delete and change how tasks are scheduled without the need for any code changes. This frees up the developer to concentrate on developing the task at hand rather than maintaining the code that describes the schedule. These two concerns become decoupled.
Where do I fit in this picture?
We had this project on the back burner for quite a while, but unlike the arcade and bingo teams, as a customer service aligned developer, I deal with Windows scheduled tasks and SQL scheduled jobs day in day out, therefore this was a well-suited project for me to see it through to production. Although a customer service aligned developer might use this more than anyone, it is a tool intended to be used by all territories throughout the company.
What is the Task Scheduler good for?
The task scheduler is intended to allow developers to schedule their computational tasks and manage them with ease. There are several features we required of the scheduler:
Task scheduler lists all the scheduled tasks whether it’s ECS task, lambda function, SQS queue or an SNS topic. You can drill down to each schedule to see which tasks it executes. This gives a complete and comprehensive overview of all the schedules in one place. It as can create, edit, disable and delete any schedule. It can attach multiple tasks to a single schedule. It has two types of audits; schedule audit and user activity audit. This gives a complete and thorough view of all the changes made to the schedule. Shown below is the screenshot of the schedule. It shows all the necessary information about a schedule and the tasks it will execute.
Authentication and authorization: The application is domain authenticated so that only specific groups of people have access to it. For this purpose, we used passport.js together with Active Directory strategy for passport.js, as it perfectly fit our requirement. Passport is an authentication middleware for Node.js – Extremely flexible and modular, Passport can be unobtrusively dropped into any Express-based web application.
Task Scheduler is bootstrapped with Create React App together with Materialize. React makes it painless to create a single page application updating and rendering just the right components when the data changes. Materialize on the other hand is a modern responsive front-end framework; both sit in perfectly to provide a robust client-side experience.
Hope you enjoyed reading!