Categories
Resources Software Development

Kubernetes resources

Kubernetes resource list

Kubernetes and Microservices go hand in hand. Basically you don’t want to do one without the other. Kubernetes is a container orchestration software. When you build a system based on the Microservice architecture you need a way to package and run those microservices on the cloud.

The traditional way of preparing a machine by running scripts which download software and prepare a server environment to run your applications are over. It is far easier to roll your Microservices up into a container with all of it’s requirements and then deploy the container.

However, once you get all of your microservices into containers you need a way for them to find each other and work together as a team to form a larger application. This is where Kubernetes comes in. With Kubernetes you use YAML files to describe your system and how you would like your system to be maintained. Once you describe your system Kubernetes works hard to keep it in the way you describe it.

Kubernetes monitors your Microservice containers. When one crashes Kubernetes fires up another. When traffic is too much for a single Microservice node Kubernetes fires up another identical node and load balances the requests, when traffic reduces Kubernetes reduces the identical node count. Kubernetes is a dream come true for Microservice based applications.

Kubernetes is highly complex and takes a lot of time to master. That is why I suggest using Openshift. Openshift interacts with the Kubernetes api for you which makes everything much easier. You should still have a basic understanding of Kubernetes since Openshift is built on top of Kubernetes. OpenShift is one of the final links in the modern DevOps pipleline. Here is a link to more resources and information about OpenShift.

Articles

Here is a link to the main Kubernetes website.

Here is a link to a glossary of  Kubernetes terms

What is Kubernetes a beginners guide.

Here is a link to a page explaining Kubernetes Terminology. There are so many new terms this article makes it easy to find the meaning of Pods, Nodes, Clusters etc.

Here is the documentation overview link.

Here is a link to the kubernetes tutorials page.

Here is a link to the list of kubernetes api programming language clients for interacting with the Kubernetes API directly in your applications code.

Here is a link to the Kubetcl  online free book about kubernetes.

Kubernetes clusters and node size suggestions. This article will help you decide how large your node instances should be and how many nodes you should include in your cluster.

Kubernetes cluster autoscaler link on github.

List of Amazon cloud instance kubernetes POD limit per instance.

Kubernetes bootcamp website. This cool website walks you through the basics of Kubernetes.

Kubernetes YAML File simply explained for Beginners This is exactly what it sounds like

Videos

Kubernetes Architecture Simplified | K8s Explained in 10 Minutes


Organizing Kubernetes with Namespaces (Kubernetes Best Practices)


Kubernetes: One Cluster or Many?


Microservices, Kubernetes, and Application Modernization Done Right


Deploying Microservices in Kubernetes – Webinar by Certified Kubernetes Administrator Janakiram MSV

This video contains useful information about Kubernetes, Microservices and Launching a Microservice based application with Kubernetes. The beginning of this video starts out explaining how the traditional Monolithic architecture worked. It then moves onto how Microservice architectures work and continues by providing a comparison of the two. At ~22:45 the video starts to talk about deploying with Kubernetes

Kubernetes Architecture Made Easy | Coupon: UDEMYJAN20 | Udemy: Kubernetes Made Easy | K8s Tutorial


Kubernetes in 5 minutes

This video quickly gives an overview of kubernetes. It could go higher up on the list, but this is where it is.

Categories
Resources Software Development

Useful and interesting programming tools

Usernap this interesting tool connects to your github or gitlab account and visually displays bug tracking information to where ever you want it. This gives you the ability to allow guest views. I may use this to show my progress on development of the Social Platform.

Categories
Resources Software Development

Redhat developer resources

My list of resources and information about Redhat software etc.

RedHat OpenShift developer resources. This page has many links to free books, videos, articles etc.

Building containerized applications Lots of useful information and resources here. This covers some of the tools RedHat offers for development with containers such as Buildah, Podman and Skopeo. It has a link for a free Ebook about using PodMan. It also has many links to tutorials.

Ebook Introduction to Enterprise Kubernetes. This covers what RedHat OpenShift does for kubernetes deployments.

RedHat OpenShift for Developers This article quickly explains what OpenShift offers developers it has some great links to more resources.

RedHat OpenShift 4 CodeReady Containers . This page talks about running OpenShift clusters on your local desktop/laptop

Local OpenShift Development Environment on Windows. This shows how to install, run and use OpenShift CodeReady containers on your local machine. This is useful for learning how OpenShift works and testing your projects. This only works on computers with Windows 10

OpenShift CodeReady Container documentation. This is the documentation to CodeReady Containers mentioned above.

 

 

 

Categories
Resources Software Development

Container technology resources and information

Containers are quickly and drastically changing the way we build and deploy apps these days. Containers make deployment easier and faster by providing the exact environment that your code needs to operate. However, with this power and ease comes complexity.

First off there are various container technologies, but the most common is Docker.

Articles and links

Link to the Openshift Startup program membership page.

Link to Kubernetes free ebook. What to know before adopting kubernetes .

This is a really good link to a page full of OpenShift resources, videos, articles etc.

Link to Official OpenShift platform youtube page.

Link to OpenShift Demos and Developer info video playlist on youtube. This has some videos about version 3 but they are still useful as an overview of how OpenShift works etc.

What are the New Features of OpenShift 4? This article covers the new features in OpenShift.

OpenShift vs Kubernetes: What are the Differences?  Basically Openshift uses Kubernetes under the hood and offers improved features especially to security. One of the main reasons I never used Docker and Kubernetes was due to running all containers in root mode. That just begs to be hacked and destroyed. So when I realized that is how it worked I moved on. Now someone has done something about the lunacy.

CRI-O container engine runtime for kubernets

Containerization Explained

The Following video explains containerization technology.

This video actually does a Virtual Machine vs Container comparison which is handy information to know. When I first started down the Microservices route I was using Virtual Machines to emulate environments. Now I can just use Docker. The VM ate tons of resources.


Introduction To Docker and Docker Containers

This next video is about Docker and containerization. It covers some of what was in the above video but explains Docker.


Docker Tutorial – What is Docker & Docker Containers, Images, etc?

I really like this video it does a nice job of explaining Docker with diagrams.


Docker Tutorial for Beginners – A Full DevOps Course on How to Run Applications in Containers

Once you know what Docker is you will want to know how to use it. This is a Two Hour tutorial course on Docker.


Container Orchestration Explained


What is Kubernetes

Once you learn about containers and Docker you then need to know how to orchestrate your applications Docker containers. Kubernetes is an orchestrator for containers.


Kubernetes for Beginners – Docker Introduction in 15 Minutes

This video explains more about containerization, docker, kubernetes and why you would want to use them.


What is OpenShift?

Once you decide you want to use Kubernetes you need some way to host your apps. Meet OpenShift

 


OpenShift Technical Overview


Building and running micro services on OpenShift: Part I

This video has some useful technical information about how OpenShift works.


Building and running micro services on OpenShift: Part II

This video has some useful technical information about how OpenShift works with Kubernetes to orchestrate your application and help it scale up and down in response to traffic.


Building and running Microservices on OpenShift: Part III

This video further covers some of the basic features of OpenShift from a developers standpoint.


Demo – Deploying from GitLab to OpenShift Container Cluster

Categories
Resources Software Development

API resources and information

API (application programmers interface) Resources

This page lists different resources about API’s how to build and test them etc.

Articles

REST And Hypermedia And GraphQL And gRPC And Event-Driven This is a great article about these topics.

Postman apphttps://www.getpostman.com/downloads/


Videos

The Basics of Using Postman for API Testing

Categories
Resources Software Development

Microservice Communication Resources

Microservice Communication resources

In order to completely understand microservices you also have to understand networking. Communication is one of the hardest parts of microservice design, get it wrong and your system simply won’t perform. Below are some useful links that explain networking concepts.

Understanding the basics of RESTful APIs. This is a great article that covers how REST works and how to design a REST API. This article contains some very useful information and is a very quick introduction to the concept.


Understanding And Using REST APIs This is another really great article that covers API consumption. This article is quite a bit longer and more involved than the one above. This article covers REST in depth and is one of the best articles I have found on the subject.

Covered in the article is:

  • What is a REST API
  • The anatomy of a request
  • Testing Endpoints with Curl ( if you have not played with Curl then you absolutely should) CURL website
  • JSON
  • Authentication
  • HTTP Status Codes and Errors
  • Messages
  • API Versioning

Communication in a microservice architecture This article covers some basic information about Microservice communication. It makes some valid points and discusses some of the techniques and technology used for Microservice communication. This Article has some really good links listed throughout it.


Asynchronous Request-Reply pattern  This is a very useful article that covers communication between the frontend client aka browser and the server backend.


Should you use MQ/Brokers or Web services? and how they are different

 


Apache Kafka vs. Enterprise Service Bus (ESB) – Friends, Enemies or Frenemies?

This article covers :

  1. Some of the failures of SOA
  2. Streaming as a replacement for ESB
  3. Compares Apache Kafka to previous SOA architecture that used ESB
  4. Talks about Streaming and why it is the next great thing you must do
  5. Talks about large companies that use Kafka and how
  6. Talks about using Apache Kafka as a dumb pipeline for streaming apps
  7. Talks about the key differences between Kafka and ESB’s
  8. Talks about using Kafka in Legacy systems along side ESB’s and previous generation technologies

 


Application Integration for Microservices Architectures: A Service Mesh Is Not an ESB

This excellent article explains SOA, ESB, Microservices and how the hell we ended up in the current confusing word soup.
This article covers the following:

  1. The basic history of Software Oriented Architecture and Event Service Bus usage
  2. Compares a service mesh to an ESB, similarities and differences
  3. Gives a decent overview of the past usage of ESB’s
  4. Has a wonderful diagram of how ESB’s operate in a SOA system.
  5. Explains what a service mesh is

Kubernetes Service Mesh: A Comparison of Istio, Linkerd and Consul 

This article explains exactly what a service mesh is and compares a few of them. This is a very good, very informative article, one of my favorite.


REST, RPC, and Brokered Messaging – This article explores three popular styles of communication in service-oriented architectures and how to chose the appropriate style for a given use case.


Remote Procedural Calls explained in depth.


This video covers RPC even deeper than the above video. This video also covers Java RMI remote method invocation.

Categories
Resources Software Development Web Development

scala web development resources

Resources for web development with Scala

Scala tags. This library is for creating HTML from Scala. Thanks lihaoyi

ScalaCSS a library for creating CSS from Scala

Categories
Resources Software Development

stream processing software resources and links

Stream processing is useful for many things, including real-time suggestions to users about content that may interest them based on their actions. You can feed streams of events to an event processor to have it search text. Designing Data Intensive Applications by Martin Kleppmann has great information about Streaming and Stream Processing in Chapter 11 Stream processing, this chapter covers the subject in great depth. If you don’t own that book you absolutely should if you are a software engineer. This book doesn’t cover Microservices, however it covers all of the software you use to create microservices and explains each in depth.  If you are engineering any kind of modern app you either have that book or you are lost as to what you are doing and haphazardly choose software because it is all hypie and cool sounding. This book explains the internals of most Databases, NoSQL, RDBMS etc., it really gives you the info you need to make sound decisions. This book will save you hundreds of hours of raw research.

Stream processor list

There are many stream processors, below I list a few.

  1. Apache Flink – accepts input from message queue or file system, can save output to a message queue, database file system and more. Easily connects to KAFKA and Cassandra. Processes streams event by event
  2. Apache SparkSpark website.  processes streams in mini batches Interesting point from Wikipedia article “Spark Streaming has support built-in to consume from Kafka, Flume, Twitter, ZeroMQ, Kinesis, and TCP/IP sockets” Another interesting point from the wikipedia is the Spark MLib a machine learning framework built on top of Spark Core
  3. Apache Storm – Apache storm website  Integrates with KAFKA, Databases and other Messaging Queues.
  4. Apache Kafka – This excellent piece of software functions as a Stream Processor, Message Broker and more.

 

 

Categories
Resources Software Development

event storming resources

Event Storming Resources

Event storming is a process of modelling software that works well with domain driven design principles. During an event storming session all involved parties get together and help model a domain, this helps everyone from the developer to the business decision makers understand the system and from a ubiquitous language ( common language). Event storming is just another modelling tool to help with quick design and development.

Articles

Event Storming 101: Accelerating Your Software Development in Domain-Driven Design This article covers the absolute basics of Event Storming what it is and how it is used.

Here is another short article about event sourcing. This article includes many useful links at the bottom.


 Videos

Alberto Brandolini – 50,000 Orange Stickies Later

This video is from the man who created the concept of Event Storming. In this video Alberto discusses how he invented this technique of Event Storming with PostIt notes. He describes and demonstrates how this sort of Brain Storming session is a great way to get all involved parties together.  This technique will help you more quickly and completely model your software. I’ll be writing about this technique in my articles about microservices with Scala.

Categories
Resources Software Development

functional programming resources and notes

Before you get too excited and go all functional in Scala you should know that 100% Functional Scala can be serious Memory hog because you are making copies of everything everywhere because functional means immutable data. Be careful with things such as map and flatmap they create lots of extra objects.

Avoiding loops for the sake of Functional programming strictness is a smooth brained action. When programming avoid hype, understand what you are doing, what your goals are and figure out how to get there. Never blindly ride the hype train.

This article lihaoyi points out some of the inefficiencies of Scala collections for example.

Articles

Scala Closures – article about closures in Scala

Pure functions in Scala – Article about what pure functions are in Scala

Basic Functional Programming in Scala – a short article covering some of the basics of Function programming with Scala

Videos

GOTO 2018 • Functional Programming in 40 Minutes • Russ Olsen