Developer Viewpoint — A Solution Architect’s Perspective on Cloud Computing
“I don’t need a hard disk in my computer if I can get to the server faster… carrying around these non-connected computers is byzantine by comparison.” — Steve Jobs
Developer Viewpoint is a regular section on the blog that involves two developers discussing diverse topics within the IT industry. The discussion takes the shape of a dialogue and in this issue, Ekhor Asemota discusses “Cloud Computing” with Stuart Gadsby.
Ekhor is a software engineer who currently works within the Capgemini Microsoft Team.
Stuart is a very experienced solution architect who works with a broad range of technologies such as Operating Systems (Windows and AIX), Containerization, Microservices, DevOps and Cloud computing.
Ekhor: One of the key characteristics of enterprise solutions is the need to integrate with other solutions. For most “non-trivial” scenarios, system integration requires complex hardware and software configurations. Prior to the advent of cloud computing, this was a significant challenge. Has the cloud had any impact on system integration and if yes in what ways?
Stuart: Yes, and generally for the better. There is no single “fits all” answer, but generally cloud computing has taken away the need to think about the underlying infrastructure and you only need to worry about the interfaces themselves — especially if working on PaaS or SaaS solutions.
In some cases, even this complexity is made easier by cloud providers setting up interfaces between system types that commonly talk to each other — you may only need to answer a few questions on a configuration page and the back end “magic” is handled for you. The use of APIs also helps makes interfacing between different systems much easier.
Ekhor: Does this ease of access to numerous technologies which the cloud brings not increase the likelihood for an enterprise IT estate to quickly spiral out of control into a “spaghetti-like” mix of technologies?
Stuart: Yes, there is a very real danger of the “spaghetti” getting out of control! Features in Azure are growing at what seems like an exponential rate with many third-party products available in the Azure Marketplace, some of which provide very similar functions to others. The problem becomes even more apparent when you have multiple projects running (either consecutively or concurrently) where each project team may have a different, preferred way of doing things or tools to use.
Ekhor: What sort of control measures would you recommend to prevent this spaghetti situation and for any business that is already in this situation, what actions can be taken to remedy the state of affairs?
Stuart: Once you have a tangle of spaghetti, it can be extremely difficult to unpick it! The best approach is to prevent it in the first place — have a vision, define standards, policies and processes. If you have these building blocks from the start and teams all use the same agreed ways of working, it can help prevent getting into the tangle in the first place.
If you already have a tangle, having these in place can help you start unpicking it as you move forward — new applications are created using the standards; as existing ones get upgraded, the upgrades follow the standards. You can also identify critical applications that need bringing into line and prioritize re-working them to align with the new standards. I think that the key point is that if you don’t have a vision, standards and policies in place you will be unable to stop the tangle from getting worse.
Ekhor: Many opponents of the cloud often cite data security as a major concern. Would you say this is justified or just a myth?
Stuart: I think that it may have been the case once upon-a-time in the early days of cloud computing. However, cloud computing has now been around for long enough and the major suppliers have had ample time to address these concerns. All the key players even offer solutions that allow central governments to use cloud securely.
That said, no matter what facilities the cloud suppliers offer to secure data, incorrect configuration can expose data where it shouldn’t. As such security always has to be a significant focus in design and testing, especially with the constraints (and penalties) you have today around things like GDPR and requirements for data residency.
Ekhor: In your view, how should IT practitioners respond to clients with such security concerns?
Stuart: At the start of a project/bid you can start to allay any fears by giving them the information pertinent to the cloud supplier being used or proposed — all the major vendors have ample information that explain how they secure data along with rafts of certifications and lists of customers who require high levels of security.
Coming back to the standards, processes and policies mentioned in the previous answers, having these in place also helps to demonstrate that development work is/will be done adhering to standards and things like code reviews and test methodologies.
You can also include third party, independent penetration testing as part of the process. It is often a good idea to have a security architect, particularly on larger projects or ones where security is of particular importance (although it always is!); this will mean that security is “baked into” the ways of working right from the start.
Ekhor: The breadth of offerings from cloud platforms such as Microsoft Azure and Amazon Web Services is very broad — there seem to be new solutions popping off all the time. This must certainly make your job as a solution architect even more difficult as there is a never-ending list of alternatives for every problem you are presented with. How do you cope with this plurality of choice?
Stuart: I think that this comes back to the spaghetti issue earlier! The first thing you need are clearly defined requirements so that you can pick the best option for your situation. Once you have that decision, it becomes your defined standard. There can be many ways to skin the proverbial cat (sorry cat lovers!) but having defined conventions can help the proliferation of using multiple solutions that do essentially the same thing — once you have settled on something, stick to it, unless there is a very valid reason for moving to something different.
That said, you do need to constantly track the developments to determine if there is a better solution to what you are currently using or if “deficiencies” in the current solution are resolved by something new. If you identify a better way of doing something you then need to assess whether to move to it considering things like ease of integrating with the existing solution, do you need to upgrade the existing solution, benefit of the new vs effort, etc.
Ekhor: DevOps is gaining a lot of attention these days. Is it something you take into consideration when developing the solution architecture? If yes could you give examples.
Stuart: Certainly! The whole end to end process of managing development, deployment and route to live becomes process driven. This reduces risk (things like user error when deploying or configuring for different environments) and increases repeatability.
This is important for ensuring that deployments are configured correctly and similarly as they progress through environments and therefore that testing done in one environment is relevant to what is deployed in the next. It is also key for agile development and incremental code releases.
One of the other benefits is the ability to rapidly redeploy (or roll back) in the event of any issues. Add to this recent(ish) developments in infrastructure as code, it is now possible to deploy entire solutions purely via DevOps code.
Ekhor: Similarly, artificial intelligence (AI) is becoming more popular in the IT industry and as expected the cloud platforms are at the fore front. What opportunities, if any, do you think exist for businesses to leverage AI?
Stuart: I’ve not personally had a lot of experience with AI yet. This makes this question a little harder to answer from my personal perspective! However, there are numerous off the shelf AI services that Microsoft Azure offers such as Cognitive services for language, vision, speech and recently announced decision, machine learning and data analytics that can be integrated into the solutions that we offer.
The cognitive services can be used in a variety of ways to improve the customer/consumer experience while the machine learning and data analytics solutions provide ways to quickly, easily and accurately analyse large volumes of data to get accurate predictions. I have recently started on a project that is using this machine learning to process large amounts of survey data to predict where the client’s technology will be required and which specific version of that technology will be required.
This then links into supply chains meaning that the correct number of specific SKUs are ordered and shipped to the correct location rather than having to estimate and either over/under order. Not only does this save the client time and money, but also improves their customers’ satisfaction as the correct device is installed to the needed locations the first time. This is just one example, but AI provides the opportunity for innovative ways to make use to the wealth of data that is available to help save our clients money and improve the satisfaction of their customers.
Ekhor: Do you think AI will further increase the drive for zero-code solutions as opposed to bespoke application developments?
Stuart: We are possibly a little way off this now, although there are some “off the shelf” AI services from the likes of Microsoft that you can call using very simple API calls and virtually no code. But I don’t think I would call that a zero-code solution.
However, as AI develops we could potentially get to a point where we could write applications by simply making a set of feature requests to an AI bot — it will then go off and effectively create our application for us (there may well be code written by the AI, but from our perspective we won’t be writing any). Does this spell the end for developers!!?
I often look at what we can do today compared to even just 15 years ago and struggle to imagine what it might be possible to do in 15 years time!
Ekhor: Many software engineers do aspire to become solution architects. What would be your advice to them — are there any resources or learning paths which you would recommend?
Stuart: I came up through a slightly different route. Rather than starting as a software engineer, my background was more infrastructure based. However, as my career progressed I often found that in order to design and troubleshoot the infrastructure properly I had to understand how the applications worked and talked to the components in the solution. There was then a natural progression to understanding the overall solution and therefore becoming a solution architect.
You could also potentially argue the reverse — that understanding the infrastructure would help the software engineer develop good and efficient software. While we don’t necessarily have the same “simple” software/infrastructure concepts, I think that having at least an understanding of things like DevOps, SaaS, PaaS and IaaS helps make a great software engineer even better. Don’t get me wrong, there are loads of really good software engineers who develop great software without needing to know the bits outside of their field, but I think it almost becomes a natural progression in developing your curiosity. Maybe I’ll stop digging there!!!
From a technology perspective, personally I think it would be a case of what interests you! There is so much out there, you cannot possibly be an expert in it all, so pick what interests you as it makes learning easier and your career will be very boring if you don’t enjoy what you are doing!
Ekhor: Some people within the industry hold the view that an architect needs to first go through the ranks as a software engineer while others think that one can become an architect straight from university. Do you have any opinions on this?
Stuart: Having done it this way myself (albeit via the infrastructure route rather than software engineer), I’m possibly slightly biased. My personal view with this, no matter what your career (IT or otherwise) is that to experience and progress up the ladder gives a more rounded view and understanding of the how other parts of the team work and the problems they encounter. That is not to say that you could not become an architect straight from university, but I think experience is important and makes a better architect.
Ekhor: With the high pace of innovation in the cloud space, architects will need constant learning to remain relevant within the industry. How do you achieve this?
Stuart: I think this is true for all streams in the industry, not just architects! The problem is balancing project work, business unit work, training and have some sort of work life balance. Keeping on top of technology advances can be as simple as reading blogs and articles or watching videos, most of which you can do a little bit here and there — maybe find a couple of hours a week either in lunch breaks or in a more quiet moments on a project — a little bit here and there researching things that interest you makes it easier to digest and spread over time.
The training and certifications are also important, and for these try to look ahead as far as possible and get them booked in, that way projects are aware of the training well in advance and can generally accommodate it.
Ekhor: With these responsibilities and the need for continuous learning, your schedule must be super busy. So, is there any “work-life-balance” for an architect?
Stuart: The short answer is yes! So far in my career , I’ve been very lucky and have been afforded a lot of flexibility, my projects have generally been delivery driven rather than time. i.e. as long as I deliver, the people I report to do not necessarily clock watch. This means that I can juggle family and out of work commitments. Yes, it might mean working late occasionally to balance it out, catch up and meet the necessary deadlines, but that is the nature of the flexibility.
Also, if it’s something that you are passionate about and enjoy doing, the lines between work and fun get a bit more blurred, and you can often find you are taking work home with you because you enjoy it (I need to get out more!). Sometimes you do have to make a conscious decision that “This is work, and I need to step away from it for the benefit of my family and personal life”. I’m also lucky in that I have a very supportive and patient wife!
Ekhor: One last question about the new 5G network and its impact on IT?
Stuart: I think that 5G will open up a whole host of technology advancements with the ability for fast data transfer between IoT devices. We already have smart homes, smart cars, self-driving vehicles, drones that have cameras, GPS and levels of navigation autonomy; having the very high bandwidth cellular networks will facilitate the sharing of real time data and AI processing of that data between them without being tied to the range of WiFi networks. This article from Capgemini sheds more light on some of the potentials of 5G.
The 5G networks will enable a truly high-speed data connected world. We are starting to get to the point where we will be bound only by our imagination (and maybe budgets and the laws of physics)!
Read other stories from the Capgemini Microsoft Team.
Join the Capgemini Microsoft team, open roles here