You may have heard the term ‘serverless computing’, but do you actually know what it means? And, more importantly, do you know whether it’s something you should pay attention to in your business? This week we’re taking a closer look at the latest cloud trend and how it’s making ripples across the world, for big brands as well as small.
What is Serverless Computing?
The word ‘serverless’ may seem slightly misleading. In fact, serverless computing still uses servers – but they’re operating behind the scenes. It is an infrastructure that builds on the strength of many users sharing the same utilities and deploying code more efficiently, with all server-side operations being run as a managed service. Many people now use the terms serverless computing and FaaS (Function As A Service) interchangeably. While traditional software development is about creating and executing a series of functions which make up the operations of an application, serverless computing can split out the entire application into separate components which can connect to each other at any scale. These all run alongside each other in functional containers, which can all be replicated and scaled rapidly when needed, based on real-time demand. Serverless computing is offered by many cloud providers as a managed service, where the provider handles all the tasks around setup, capacity planning, server management and more.
The Benefits of Going Serverless
Many world-leading brands like Uber, Airbnb and Coca-Cola have applied serverless infrastructure to their services, in order to meet fluctuating, instant demand. But many smaller, up-and-coming apps and services have been able to benefit from the same technology to compete on the global scene. Let’s take a look at the main benefits that are driving the take-up of serverless computing.
- Reduced Costs
The cost-savings of serverless computing is two-fold. First of all, you are able to benefit from using a shared infrastructure, with the cost distributed across a large number of users. Secondly, you save on labour costs as you don’t need to have your own staff develop, manage and monitor your applications. - Agility and Time to Market
For many organisations, it is crucial to be able to experiment and innovate. With the help of serverless computing, it’s possible to move very quickly from conceptual idea to first deployment – at a low cost. The nature of the shared functional infrastructure means that you can piece together the right elements of your application in a matter of hours rather than weeks or months. - Scalability
In serverless computing, you only pay for the computing resources you need. This – in combination with the ability to scale rapidly based on instant requirements – makes it an attractive model for organisations that want to scale up at a predictable cost. When scaling down, the model is also cost-effective, as you’re not stuck with expensive equipment operating at low capacity. - Reduced energy footprint
When managing servers manually, many organisations tend to over-provision in case of potential increased demand. This leads to inefficiencies that add up to a huge impact on energy consumption globally. But when we allow a serverless provider to manage computing capacity, we can be confident that we only get the capacity we need at the time we need it. - Improved user experience
Slow operations and lag are among the biggest reasons for users abandoning an application, and network latency plays a big part in causing these issues. However, a serverless provider offers a huge range of regional points of presence that help to speed up performance by performing functions nearer to the user.
A serverless future
Here at DCSL, we are fans of all and any technological progress that allows us and our customers to care less about hardware and more about software. Serverless computing is still in its infancy but we’re confident that the future will bring many more levels of efficiency to the way we share the costs and maximise the resources of the world’s computing power.
In the age of GDPR , a data breach may seem like your worst nightmare and one you’d rather not think about. But if you do find yourself in a position where a data breach has occurred, it’s important to have a clear plan of action for dealing with it. In this blog post, we’re taking a look at what the most important steps are for dealing with a data breach and limiting any potential damage to the business.
What constitutes a data breach?
A data breach is what we typically refer to as a security incident where confidential or sensitive data is exposed or released to a person or organisation who is not authorised to see it. Of course, a data breach is not always malicious. It can simply be a result of an accidental release of information. However, the legal implications can be just as severe regardless of whether the breach is caused by malware, a targeted attack, a lost laptop or a stray email.
The steps to take after a breach
So what do you do once the unimaginable happens? In an ideal world, your business should have a detailed incident response plan that you can immediately launch and follow. But whether or not you have access to a plan, we want to share some of the key elements that should be part of an overall checklist for taking action to deal with the aftermath of a data breach.
- Contain the breach
Once you’ve discovered the breach, you should work to immediately identify the compromised system and fix any data leaks. It’s important to ensure that your critical systems are out of danger. Now is also the time to change passwords across the organisation and enable multi-factor authentication wherever possible. - Do a damage assessment
Before moving on, you should assess the extent of the damage. You may want to set up a team of internal or external resources to evaluate the situation, putting an action plan in place to resolve the issue. - Communicate
Communication is key after a breach. Once you have a clear view of the incident, you should notify anyone affected by it – potential victims, employees, and other stakeholders. If it’s a major incident, you should also communicate proactively to relevant media. Don’t wait – and don’t allow rumours to take over. Be prepared with statements and answers to questions. State future action and prevention going forward. - Do a security audit
To understand the root cause and issues of the data breach, you may want to consider bringing in a third-party specialist – different to any existing IT security partners – to allow you to get an unbiased reflection of the incident without covering anything up. This would be someone who can uncover exactly what data has been compromised, identify the vulnerabilities that caused the breach, and help you find remedies to prevent the issue from happening again. - Make a recovery plan
Unfortunately, many organisations don’t actively work to improve their data protection strategies until after an incident has occurred. But by having a solid procedure for managing a data breach from day one, the business can save a great deal of money and time in sanitising the incident.
Ensure that you have a recovery plan that allows the business to rapidly go back to normal operation while learning valuable lessons from what’s happened. According to security software company Avecto, a company should consider a multi-layered strategy that includes things like patching, application whitelisting and privilege management, limiting the pathways for malware to obtain sensitive data. - Notify the ICO
The Information Commissioner’s Office require you to report certain data breaches to them when they involve ‘the accidental or unlawful destruction, loss, alteration, unauthorised disclosure of, or access to, personal data’. Not all breaches qualify for letting the ICO know, but many do. Once a data breach has taken place, it’s important to quickly establish whether the ICO needs to be notified. If unsure, use the ICO’s self-assessment tool.
Moving on as a business
A data breach – when handled well – does not need to mean complete disaster for an organisation. It’s important to start focusing on the future as soon as possible and use any lessons from the incident to build a stronger, safer data security policy going forward. And remember: You don’t have to do it alone! Find a solid, dependable IT security partner who can give you all the confidence you need.
All industries are being impacted by Artificial Intelligence (AI) and software development is no exception. Every part of the software development process can benefit from the input of AI, from software design and testing to decision-making and automated code generation. Today, many AI applications focus on improving existing processes and development tools. However, research firm Forrester predicts that AI will eventually completely re-write the way that the sector works, as it starts to seep into every part of the software lifecycle – improving processes that are traditionally inefficient and prone to mistakes.
Redefining how software development works
Historically, developing a computer program would require a developer specifying what they wish the system to do, and then hand-engineering all desired features. However, there are many tasks that are too complex to code using traditional rules and algorithms. As an example, it would be virtually impossible to hand-engineer software to correctly identify photos of dogs. There are simply too many variables, such as fur colour, size, tail length, ear shape and much more. That’s where AI techniques like machine learning and deep learning can help.
Machine learning in action
In a recent example, developers succeeded in teaching a computer to differentiate between a chihuahua and a muffin using AI. With machine learning, a computer isn’t given rules on how to make decisions and complete certain actions. Instead there is a set of curated, tailored data that teaches the machine what to do. Positive feedback can reinforce certain actions, whilst negative feedback will stop other actions from recurring. In many ways, this is how the recommendations work on Amazon and Spotify. A customer buying a recommended product or adding a song to their playlist acts as positive reinforcement for the machine-learning algorithms behind each platform.
The future of programming
We expect to see software development increasingly shifting towards a machine-learning model, where programmers will rely less on traditional programming methods. The software developers of tomorrow will most likely move away from writing code to instead doing more scientific tasks like collecting, processing and analysing data for an AI engine to use. As author and Google research engineer Pete Warden predicts : “In ten years, most software jobs won’t involve programming.”
Current uses of AI in software
Before this AI-driven future, however, there are more commonplace applications of the technology that are being used now. Let’s take a look at some examples!
- Predicting project timelines
AI can help to predict development timelines by using historic project data such as feature definitions, project estimates, actual timings, employee profiles, and more. While it may be nearly impossible for a human to take all variables into consideration affecting a project, AI can do this quickly and easily. By creating a digital profile of decisions and consequences, a development team can estimate costs more accurately and avoid unnecessary delays. - AI programming assistants
More advanced developers can benefit from AI programming assistants, such as Kite for Python . This is a tool that can offer just-in-time support and recommendations to developers when they are reading documentation and debugging code. This could include suggesting relevant documents to read, or highlighting best practices and code examples. Through these assistants, developers can drastically cut their workload and focus on more creative and strategic tasks, such as improving user experience. - Routine testing and identifying errors
AI can analyse historical project data to identify common errors and automatically flag them. Once the software has been developed, AI can quickly alert the team to any errors – before the issue becomes worse and causes system downtime or customer complaints.
Software tests often have to be repeated every time the source code is modified, which is time-consuming and costly. However, AI can automate much of this, saving time and resources while allowing human testers to focus on more sophisticated tests.
We expect to see testing become more or less AI-dominated in the future, where software errors can be automatically identified and fixed by machines without the need for human intervention. - GUI testing
These days, every consumer interacts with software in a graphic and visual way. This makes Graphical User Interfaces (GUI) incredibly important to the long-term success of a software product. Testing GUIs is vital to ensure that the user experience is as expected, and error-free. However, a lot of GUI testing methods rely heavily on human knowledge and intervention.
With AI, testing becomes more precise and efficient. Applitools is an AI-powered GUI testing tool that automatically checks whether or not visual code is functioning properly. Developers can see how their software looks via multiple screen layouts (including smartphones and tablets) to quickly identify any visual errors. They can also test the visual user experience and the functional behaviour of their software. - More informed decision-making
Many organisations spend a lot of time prioritising different products and features when making decisions for future development. This process can become more data-driven and informed by using AI for analysing the success of past development projects and released software. This can help business leaders to focus their resources on projects that will provide the most return on investment and discard the ones that are too risky.
AI is a work in progress
Much like software itself, AI technology is constantly evolving and improving – which holds exciting potential for software development. While the current benefits of using AI come from efficiencies in the development process and improved decision-making, it will most likely alter our very notion of software development in the future.
One day, AI will be better at coding than the best human programmers – which is a good thing for the entire industry.