Author: way0utwest

  • Kubernetes Pipelines

    This post continues looking at some of the Kubernetes concepts I’ve been learning with the 50 days of Kubernetes (K8s). Specifically in this post, I’m writing and thinking about the flow of containers from code to a Kubernetes cluster.

    The video talks about pipelines, which is the way in which you get code running in a Kubernetes cluster. The start looks at the idea that we don’t want arbitrary containers running in the cluster, so we limit access to the cluster to somewhere like a container registry, like Azure Container Registry. This ensures that only those containers loaded into your space get onto the cluster. No pulling from Docker Hub or some arbitrary location.

    However, then we worry about developers loading containers into the registry that haven’t been checked. So, we don’t give them permission, we give it to some CI/CD pipeline, which means any code written by a developer that builds a container has to be checked in.

    Now, we have a pipeline flow that we can control. As Brendon mentioned, this isn’t simple, and really, I think you have a lot of work here before you want to trust things running on a production Kubernetes cluster. Really now you need these in your CI pipeline:

    • Unit tests
    • Vulnerability scanning
    • credential scanning ( I see this from MS for Github repos)
    • every other type of scanning you can do

    In this way, you ensure some quality level in your containers as far as security goes and code working. The big win here, at least for me, is that you can continue to raise the bar by adding more tests and scans, something that’s hard to do for developers without automation.

    Not a lot new here, but certainly the idea of putting access and control into the CI/CD flow makes sense.

  • Changing Hardware

    I’ve been an Intel user for most of my life. While I have owned Mac machines, and I did once have an AMD desktop for the kids, I have pretty much stuck with Intel as my CPU of choice. Certainly I’ve had other processors in mobile devices, but for work, I have almost always purchased servers, desktops, or laptops with Intel CPUs.

    I remember the time in the 80s and 90s when there were lawsuits, advertisements, and innuendo put out by the companies, as well as fans of either side. I knew people that were sure Intel was the only way to go, fervently claiming that I’d have all sorts of issues trying to run my software on anything other than an Intel CPU. Just as insistent where others that assured me AMD worked fine and Intel was an overpriced waste of money.

    Over the years, I’ve seen Glenn Berry note that SQL Server runs better on Intel, because of the superior single-threaded performance on Intel machines. He’s changed his mind recently, and talks about why in a post this week. Glenn does advocate moving to new hardware, which often can give you better performance over older hardware at a lower consumption. If you are stuck on an older 2008/2012/2014 system, perhaps a hardware refresh is worth considering.

    Would any of you consider moving to AMD CPUs for your SQL Server instances? Is a hardware refresh something you might consider instead of upgrading software versions? If you got a 30-40% performance increase from a modern processor over a 2012/2013 era one, would that be worth the cost of changing hardware?

    We know that changing hardware isn’t as simple or easy as replacing one part with another. Likely you’d have a fair amount of labor to change out a bit of server hardware, even if you didn’t have to change any of your storage. With the growth and advantages of the cloud, is this something to even consider these days?

    I don’t know, though I tend to think that for most organizations, it’s not worth the time and hassle to update hardware without updating software. Perhaps you feel differently, and if so, tell us why.

    Some of you might be like me, not even really thinking about what hardware choices are out there. You let someone else worry about the physical machines and you just ask for a certain level of RAM, a number of cores, and a certain amount of storage performance. That’s how I’ve built SQL Servers in the past, which is really what I do now in the cloud.

    Steve Jones

  • Are Windows Containers a Good Choice?

    I like containers. I think they’re the future of the SQL Server data platform. I also think this is likely on Linux, with Linux versions of SQL Server. You might disagree, and that’s fine, but that is where I see this moving over time.

    Why? I ran across a great post from Joey D’Antoni of DCAC that outlines one reason: Kubernetes. This is the way we will start to orchestrate SQL Server instances in the future, whether disparate or scaled-out, and this is really Linux technology. If you go Linux, with Kubernetes and containers, you’ll be able to easily move your systems as needed from your data center to developer machines (perhaps with SQL Provision from Redgate), to the Azure cloud, or over to the AWS cloud, a partner Kubernetes install, etc. It’s flexible.

    Windows Kubernetes will be less flexible. Inherently because less people use it, while more and more people are using, supporting and deploying Kubernetes on Linux.

    This won’t happen soon, as I think it’s 5-10 years before a good majority of SQL Server moves to 2019+ and containers become more mainstream for app and data work, but this shift is starting.

    This also doesn’t mean Windows goes away. I really like Windows. I’m comfortable with it, and I plan on having a Windows laptop for the forseeable future. What’s more, I can run Linux containers on Windows, thanks to the WSL. Even Microsoft sees containers with Linux as a future on Windows.

    Like Joey, I don’t want to dismiss or denigrate any work for Windows containers. I think it’s a good idea, and certainly some people will want to run their Windows apps in Windows containers. I just don’t think it’s the future for the data platform.

    Steve Jones

    Listen to the podcast at Libsyn, Stitcher or iTunes.

  • The AI Manager

    One of the advantages of a computer is that it will handle repetitive tasks very well. That’s one reason the DevOps world pushes for automation of simple tasks, like compiling code or copying files between machines. We know the software will perform the task the same way every time, giving us a reliable, repeatable process. Even in many AI systems, the structure of the program ensures some level of reliability, though the actual actions or results may vary dramatically based on the inputs.

    For some tasks, this is great. If we have a system watching for a change in code to rebuild the application, that’s certainly a job for a computer rather than a human. If a sensor needs to be checked and an action taken if it exceeds a value, certainly the watching ought to be done by software, though the actions may or may not be something we want a system to do without human input.

    In some sense, I likewise think that the use of AI to manage workers is a bad idea. This was something I read about in Manna, which seemed exxagerated when I first perused the story. Now it seems that some of this is coming true in this story about workers in a call center being manager by an AI system. There is a software on their machines that tracks their activity, the way they interact with customers, and more. If there are potential problems, the software tries to give them messages about how to alter their behavior. Many employees aren’t bothered by this, but I wonder if that will be the case over time, especially if this software starts to affect employment and pay decisions.

    I think this is micromanagement at a level I’d never want to work under. I know that some of these jobs are akin to factory jobs that make widgets, with employees doing the same thing over and over again. However, there also is some creativity and thought required, otherwise I’d assume an AI could just do the whole job. That might be coming, and I wouldn’t be surprised to see it, but as long as humans are working here, there ought to be plenty of human oversight.

    Could you see this in our industry? Maybe AI reminders that you’re slow to close a ticket, or not committing enough, or even that you’re not doing enough testing. It’s crazy to think that there could be software that companies use to manage developers and other technology staff.  My guess is most of you think this would be a poor idea, but I could see this becoming used in help desks and infrastructure at some point. If it works there, who knows what types of AI software might be deployed by companies.

    Perhaps more worrisome for many is that if this becomes a trend, this might affect the middle management levels in companies more than workers. One manager might do the job of 10s,  or even 100s, which is its own societal implications if we use less people as supervisors. Maybe this would make for more efficient companies, and hopefully, less meetings. I don’t know if I think that’s a good evolution of software being used to manage a process.

    Steve Jones

    Listen to the podcast at Libsyn, Stitcher or iTunes.