Showing posts with label Cloud Computing. Show all posts
Showing posts with label Cloud Computing. Show all posts

Tuesday, December 29, 2020

Before I continue, I suppose I ought to clarify the part about 'speaking your truth'.

I fully believe that there is an objective truth, mostly with regards to things that can be measured and counted and validated with science. The grass is green (hopefully, if well watered in the spring or summer), and this is something we can go out and see for ourselves.

There is also our own inner truth. It can come from our experiences, the ideas we encounter, the way we relate to those ideas, etc. People can argue about whether those original ideas are true or not, but my experience with them is uniquely my own, and relaying that is my truth. 

Which is also why the things that can't be validated by science are often so subjective. 

When I first started blogging, I generally tried to keep the posts coherent and somewhat well-researched. If I could find an article making the point I remembered I'd link to it. But, well...

This is my own weird little corner of the internet, and if the blogging statistics are right almost nobody is reading it. I've started going more with an attitude (meant in a light-hearted way) of f*** it.

F*** it, I remember reading something, somewhere, and this is what I recall and how it impacted me. I don't necessarily remember where I read it, nor am I 100% sure I remember it accurately. But f*** it, blogging isn't about being 100% accurate anyway. 

I've also decided to keep some of the asides and detours, though I generally circle back to my point. That's closer to how the human brain works anyway, so whatever. I'm not trying to get these things published in scientific journals, or even as op-eds. 

(Speaking of asides - there are some subtleties with 'speak your truth'. For example, if you admire Mohammed a great deal and try to imitate him, you should be very careful that you're not trying to speak Mohammed's truth. Only Mohammed can speak his truth. You can speak about how Mohammed impacted you, and why you admire him, and how you chose to live your life based on him. That's your truth, and yours alone. Don't try to mimic other people, don't try to be other people, or you are missing out on sharing that thing that is indescribably and solely yours.)

So, on to the main topic, the reason I made my earlier post about cloud computing.

I have heard it said that our ability to govern, and how, is related to the technology of the time. More specifically I've heard speculation that there was a size limit to how much the Roman Empire could control, given that communicate depended on how fast people could walk, or travel in horsedrawn vehicles, or sail a boat. That's part of why Roman governors had so much independence. It took too long to send a message to the Emperor, much less get a response. If you were dealing with anything that was time sensitive, you needed the authority to make the decision on the spot.

Our own earlier elections were affected by this. It took time to count the votes and send the results in. It also took time to communicate with whoever you wanted on your staff, and get their responses. The telegraph, telephone, and now the internet have changed that calculus tremendously.

As communication has gotten faster, different problems have developed. There's always been problems with delegating and creating a system that brings the important things to your attention (while delegating the things that can be delegated so that you're not swamped.) Iirc, Philip II struggled with that.

These problems are worse now. 

Previous eras also struggled with getting information in the first place. 

Now we are swimming in it.

A lot of this ties into organizational structures - which often act like my earlier example about the project management triangle. That is, there is no perfect system. There are trade offs, and benefits, and which ones are worth it depend on the circumstances and your own priorities.

The army, as one example, has the structure it does in part because we've learned people can only effectively manage so many things at once. Give a battalion commander a couple of combat companies, a headquarters company, and a staff and that's probably about what one person can manage. The company commander has a few platoons and an XO, and same. (Maybe a little less in number, since s/he's less experienced). But a structure like tends to have many layers between the bottom and the top, which means there are multiple places that can become chokepoints. It can take a while for information to travel up and down the chain, and anyone along the way can slow or speed the transmission rate. (We've all heard of someone going on vacation, and an important document sitting in their inbox until they get back. Sometimes it's even more deliberate than that, too.)

So you get people who try to 'flatten' the structure. Take out a few layers. That can run the risk of overwhelming the people everything is funneling to, but it can also take out some of the lag and bloat.

Technology and communication plays a role in this. The Secretary of Defense, for example, can now send out an e-mail and know that it will reach every. single. person. as soon as they read their e-mail. And the cost of doing so is ridiculously small.

Our companies can now have a zoom meeting where thousands of us listen to our CEO, and we can even ask questions. Verbally or via keyboard.

That means you can flatten a hierarchy to a far greater degree then you could before, but you still have the problem of potentially overwhelming the person at the center of it all. The CEO, other members of the C-Suite... various other people in positions of power and authority.

Now, I've complained before about how a lot of our processes are impersonal and make us feel like we're just a cog in the machine. That's in part because the solutions of one generation become the problems of the next. 

Or rather - policies, procedures, and structure are important. They have helped us create systems that can produce the exact same thing, to a consistent standard. The fact that computer memory cards are consistently the same size, so that we can upgrade with new cards (so long as they fit the socket) is amazing. That we have screws and nuts and bolts of standard sizes, good enough that we can go out and buy anything labeled that size and expect it to fit, is awesome. Impersonal though the army MTOE can be, making sure that your staff has someone specifically responsible for comms, or supplies, or operations... all of these help make sure we're consistent. Yes, every team changes whenever a person leaves or joins. Everyone is different. And the team will adjust a bit (taking up the slack for the weaker members, whether it's one staff officer taking on more duties or a high speed subordinate stepping up.)

The modern industrial age required quite a bit of that to work. Clearly defined standards, clearly defined roles, clearly defined chains of command - there are quite a few people who would be hopelessly lost without it.

I suppose this is as good a place as any to mention some socioeconomic differences. Or rather, even though we've developed machine-like structures, the people with the best connections often manage to get around them. This causes quite a bit of resentment, in that most of us are at the mercy of impersonal and overpowering bureaucracy that the well-connected are free to ignore. Take the current vaccine rollout (and numerous people upset that the very people who minimized coronavirus and downplayed it used their connections to get a vaccine before high risk people like the elderly and hardworking nurses and doctors are still waiting.) Similar issue with the 'Good Old Boy Network'. Either everyone should have the same access and privilege, or nobody should. Letting some people get cushy jobs without qualifications just because they're well-connected, while others work two or three jobs and can barely make ends meet... and are constantly told they don't have the qualifications for anything better... it's a breeding ground for anger and resentment. 

Now, I've talked a bit about the Industrial Age, and a little bit about what I've heard some people call the Information Age. The latter, if we use the term, is new enough that we're still sorting out all the ramifications. Massive amounts of data and fast communication is just one part of it...

The cloud computing structures I talked about are another. Not just in and of themselves, but as a symbol of some of the differences.

The legacy structure - the capacity planning, the systems businesses created to figure out how much they should buy and when they should replace their systems - are also examples of the policies and procedures I mentioned earlier. It was important work, it helped businesses ensure they had the resources they need, but it was also slow and not very customizable. You couldn't react very quickly to change in demand, and when you had just invested thousands or millions of dollars in new hardware you were probably not going to buy anything new until it reached the end of its lifecycle. Not unless the benefits of upgrading greatly exceeded the sunken costs you'd already put into your system. (Hence why businesses may still be operating on older versions of Windows Server, or RedHat, or whatever.)

We have unprecedented resources for combining industrial age consistency with a level of customization that hadn't existed before. Or rather, you could have a master craftsman customize anything if you had the money for it. It was much harder to do so for the less well off. (Also why clothing was ridiculously expensive back in the day, whereas now we can all get cheap and ill fitting clothes at a low enough cost that most of us have wardrobes full of things we never wear.)

The cloud computing structure highlights this. You can customize the resources you use to fit your particular need, even as you draw on the cloud provider to ensure consistent and reliable access. There's the potential for great resilience (though also potential for great vulnerabilities. Consider how the Nashville bombing took out the internet and cell phone service for a large region. Or the recent AWS outage, and I think Google recently had something similar. Not sure what the root cause was, whether it was an internal problem or something else. I'm digressing again, though.)

I'm not sure I can foresee all the changes heading our way... Heck, I'm still kind of interested in seeing whether 3D printing will make a difference. New technology seems to go in these cycles where people hype it up, then it fails to live up to the hype and they forget about it. Then people get a better sense of how to use it, and it comes back and actually transforms industries. (Something like that.) 3D printing has the potential to totally change logistics, shipping, customization, and storage. After all, if you can make the exact part, exactly as demanded, in a 3D printing facility that serves a particular region... then you don't need to store the manufactured parts in a warehouse. Just ship the raw components to the 3D printing site as needed. (I am not saying it's going to happen. I don't know near enough about 3D printing, or it's current status. But if we got to the point where the bulk of our manufactured goods could be created that way, it would change a lot of things.)

I do think, though, that we have the potential to combine the benefits of mass manufacturing, standards, and consistency with the customization and personalization that had been missed before.

And there's probably the potential for similar changes in organizational structures, if we can sort out the processes and procedures for doing so.

Cloud Computing, Background Knowledge for a Future Post

My company is pushing for us to learn more about cloud computing (Amazon Web Services, Microsoft's Azure, Google, etc.) Since we will be working with whatever our clients choose, that generally means learning all of the above.

Anyways, it's interesting seeing the business from this side of things. Most of them - Amazon in particular - are known more for what the average person uses it for. Ordering all sorts of goods and services. (I wonder how much of Jeff Bezo's fortune comes from the consumer side of things, and how much from cloud computing and serving other businesses.)

I want to talk a little bit about another topic, but understanding the cloud will help with that discussion. The training sometimes feels like a really long sales pitch, but the point they're making (and the benefits they're selling) are undeniable. Let me explain.

Your average person is most familiar with the PC. Well, these days it might be a laptop (and many do everything with a cell phone), but most are at least a little bit familiar with how a personal computer works. 

Maybe you've got gigabytes of music, or videos, or movies. The computer doesn't access all of them all the time, but it's saved on your hard drive. You might even buy an external hard drive, which you can attach to your computer if/when you want to access anything.

Sometimes your computer stops working. Maybe an update went wrong, or the hard drive failed. Maybe you got a 'blue screen of death'. You cuss and grumble and either fix it or find an expert who can fix it for you.

A business can't afford that, though. Customers expect the ability to access a website, to make a purchase, to check their balance or file a dispute 24/7. It's one thing to lose out on an hour or two of work because you can't get the blasted computer to work, it's another thing for a business to lose out on millions of customer transactions. (And if outages happen too often, you may lose your customers entirely.)

So quite a bit of what makes the business side of things so different is ensuring high availability (HA) of services, as well as making sure you can operate at the necessary scale. It's one thing to use your PC to play a movie every evening. It's another thing to stream video to millions of people all at the same time.

And oh, btw. That heavy business level use puts far more wear and tear on business computers than an individual puts on their laptop or PC. You, as an individual, might have a hard drive that lasts well beyond the time when you replace your computer. A business? They're using and abusing their machines continuously, so failures are far more likely.

Okay. Let's talk about the old legacy way of doing things before I start discussing the cloud.

You're a business, and you offering up some sort of product. Maybe it's just a web site where people can reserve spots on a summer kayaking trip, maybe it's a small business that sells cute little knick knacks. Whatever. You need a website, you need a way of letting people look through your catalog, and you need a way of handling the purchasing. You probably have a database to store all the information on your product, plus maybe your customers (if they create accounts).

You need to make sure your website is up 100% of the time, or as close to that as possible. You have a computer (or two or three) that acts as a server. It serves up the website, which customers (i.e. client machines) access. But one server might go down, so what you really want is two or three computers serving up the website - and a load balancer that receives the website requests and sends them to whatever server has the lightest workload.

You have to figure out what the likely requirements are going to be. How many people will access your site at any given time? Large businesses might have a department called 'capacity planning', which tries to predict what sort of traffic you'll get and make sure you have enough resources to manage it. Is two servers enough? Three? How large do they need to be? What's their processing power? When will they get old and obsolete and need to be replaced?

Getting the calculation wrong can have serious consequences. If you don't have the customers you expect, a lot of your equipment will be idle. Hardly doing anything but collecting dust. 

The opposite is also a problem - if some crazy fad makes you popular, you might have far more traffic than you expected. More than your servers can handle, which means it starts dropping requests and potential customers can no longer access your website.

It's even worse if your business is seasonal. That kayaking site might get a lot of hits in the summer, and almost nothing in winter. The site selling knick knacks might sell a lot during the holiday season, and almost nothing the rest of the year. Which causes problems for capacity planning.

Do you purchase what you would need during the busiest time of the year, and let the equipment sit idle the rest of the time? Do you purchase enough to satisfy average use (and maybe a little more), but accept the potential losses when the busy season rolls around and your site gets overwhelmed?

Now... let's talk about cloud computing.

For most users, cloud computing is practically invisible. You surf the net, you access a site, and you have no idea what is going on behind the scenes. You get your website or your streaming video, or a game on your cell phone, and as long as it works it's all good.

But the business world has long worked with virtual machines. After all, your computer functions because of a bunch of 1's and 0's, stored in sequence. You can copy over those 1's and 0's and run them on a much larger machine to do the same thing. Hence, a 'virtual machine', that operates just like your personal computer or laptop. It's just that it's one of many programs running on an enterprise level computer. (There's a lot of technical terms here - a hypervisor that hosts images. I'm trying to keep this simple so I'm kind of avoiding them.)

They're still running on a physical computer somewhere, sure. But you can make a virtual duplicate of just about any of the hardware you used to manage yourself. There's actually quite a bit of advantage in doing so. After all, for most home users they generally use only a fraction of their computer's processing power. If you're on a windows machine and you open the Task Manager (just right click on the task bar. A menu pops up and Task Manager is one of the options) there's a section for 'Performance' where you can see how much your CPU - i.e. central processing unit, or computer processor - is using. Mine is fluctuating around 10-15%.

For various reasons businesses like to have one application per machine, but that one application may not use a lot of processing power. If you make them virtual, then the processor on the machine hosting them can process everything more efficiently. 10% to your web server, 10% to your database, it can allocate CPU time as needed.

Cloud computing takes that idea and runs with it. There are still extremely powerful physical machines running everything. Somewhere. The cloud provider decides where, and does the capacity planning, and manages all of that.

The business just uses a small fraction of that hardware to run the virtual machines it needs for its business. Instead of two or three web servers sitting in a closet somewhere with a load balancer, there are two or three virtual web servers and a load balancer operating on a cloud provider's machine somewhere (along with other companies, and only the cloud provider knows how many are on each actual piece of hardware.)

Here's where the advantages come into play.

Instead of trying to predict how much your business will grow over the next year (or five) and purchasing the hardware needed to support that, you can order just what you need to handle your current level of traffic. If your business grows and you need more web servers, you can easily make a copy of your existing virtual machine and create another. Those two web servers easily become three or four (or ten, or twenty) as needed.

You can easily adjust to seasonal differences. You don't have to try to plan for the Christmas rush, or the March/April tax season. You don't have your machine sitting idly by during slow periods.

The cloud provider hands all the icky hardware decisions. They get the physical machines, they handle the physical network cables, they handle the high availability processes that allow your virtual machine to continue running even if some of the hardware breaks.

The cloud also makes it easier to come up with disaster recovery plans. If one site gets hit by a tornado or earthquake it's not too hard to have another duplicate site up and running some distance away. (This is more complicated then it sounds, and a Disaster Recovery plan on paper might not be as good as it needs to be... which is why good businesses actually test their Disaster Recovery procedures. But that's another topic.)

There are a lot of buzz words used to describe these benefits. Scalability. Pay-as-you-go. Software-as-a-service. They describe a very real, tangible benefit to businesses. After all, that small kitschy business doesn't really want to spend a lot of time trying to decide how much hardware they need to manage their web traffic. They just want to make and sell cute little knick knacks. That kayaking business doesn't really want to worry about whether they need to order another server, or retire their existing equipment before it breaks. They just want to help people schedule a fun and exciting adventure.

And cloud providers can generally work on a scale that makes them efficient than having one hundred small businesses managing their own equipment. 

It's interesting, though, that transitioning to the cloud generally creates a more confusing structure (even if it is more efficient and scales more easily.)