diff --git a/docs/SpringFramework.md b/docs/SpringFramework.md deleted file mode 100644 index 3fea3b5a..00000000 --- a/docs/SpringFramework.md +++ /dev/null @@ -1,5 +0,0 @@ -# Spring Framework -- [spring.io](https://spring.io/) -- [javatutorial.net: Introduction to Spring Web Framework](https://javatutorial.net/introduction-to-spring-web-framework) -- [javarevisited.blogspot.com: 10 JdbcTemplate Examples in Spring Framework](https://javarevisited.blogspot.com/2020/05/10-jdbctemplate-examples-in-spring.html) -- [medium.com: Top 10 Courses to Learn Microservices in Java and Spring Framework](https://medium.com/javarevisited/top-5-courses-to-learn-microservices-in-java-and-spring-framework-e9fed1ba804d) diff --git a/docs/faq.md b/docs/faq.md index adecbd18..5590c58d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -8,6 +8,9 @@ - [Dzone: Programming Styles Compared: Spring Framework vis-a-vis Eclipse MicroProfile 🌟🌟](https://dzone.com/articles/programming-styles-spring-boot-vis-a-vis-with-ecli) - [Dzone: Containerization in 2020](https://dzone.com/articles/containerization-in-2020) Let's look at how containerization has changed enterprise development in the past few years and what developers should know when considering a container strategy. +## History of Microservices +- [History of Microservices](https://bit.ly/kubeappserver) + ## Kubernetes Native - [developers.redhat.com: Why Kubernetes native instead of cloud native? 🌟](https://developers.redhat.com/blog/2020/04/08/why-kubernetes-native-instead-of-cloud-native/) @@ -20,6 +23,8 @@ ---
+[![history of microservices](images/history_of_microservices.png)](https://bit.ly/kubeappserver) + [![microservice arch](images/microservice_arch.png)](https://medium.com/javarevisited/10-free-spring-boot-tutorials-and-courses-for-java-developers-53dfe084587e) [![Full Stack developer](images/Full_Stack_cybercoders.png)](https://www.cybercoders.com/insights/what-hiring-managers-look-for-in-a-full-stack-developer/) diff --git a/docs/git.md b/docs/git.md index 3b37e215..59a36d47 100644 --- a/docs/git.md +++ b/docs/git.md @@ -50,6 +50,7 @@ * [10 useful Git commands you wish existed – and their alternatives](https://datree.io/blog/useful-git-commands-list/) * [github.blog: How to undo (almost) anything with Git](https://github.blog/2015-06-08-how-to-undo-almost-anything-with-git/) * [dev.to: Git Explained - The Basics](https://dev.to/milu_franz/git-explained-the-basics-igc) +* [medium: 7 Best Courses to Master Git and Github for Programmers](https://medium.com/javarevisited/7-best-courses-to-master-git-and-github-for-programmers-d671859a68b2) These are the best courses to learn Git from scratch and also advanced concepts like branching and merging. It also includes a free course to learn git. ## Design By Contract [Wikipedia: Design by contract (DbC)](https://en.wikipedia.org/wiki/Design_by_contract), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software. diff --git a/docs/images/history_of_microservices.png b/docs/images/history_of_microservices.png new file mode 100644 index 00000000..947c9fa9 Binary files /dev/null and b/docs/images/history_of_microservices.png differ diff --git a/docs/java-and-java-performance-optimization.md b/docs/java-and-java-performance-optimization.md index 2617c1be..253b6761 100644 --- a/docs/java-and-java-performance-optimization.md +++ b/docs/java-and-java-performance-optimization.md @@ -1,5 +1,6 @@ # Java and Memory Management - [Java Performance Optimization](#java-performance-optimization) + - [Benchmarking modern Java Virtual Machines and the next-generation garbage collectors](#benchmarking-modern-java-virtual-machines-and-the-next-generation-garbage-collectors) - [Relevant JVM Metrics](#relevant-jvm-metrics) - [Common JVM Errors](#common-jvm-errors) - [Tuning Jenkins GC](#tuning-jenkins-gc) @@ -20,6 +21,9 @@ - [DZone refcard: Java Caching](https://dzone.com/refcardz/java-caching) * [Dzone: 7 JVM Arguments of Highly Effective Applications 🌟🌟🌟](https://dzone.com/articles/7-jvm-arguments-of-highly-effective-applications-1) How to use 7 JVM arguments to help increase your application's performance and avoid common memory pitfalls. +### Benchmarking modern Java Virtual Machines and the next-generation garbage collectors +* [jet-start.sh: Performance of Modern Java on Data-Heavy Workloads, Part 1 🌟](https://jet-start.sh/blog/2020/06/09/jdk-gc-benchmarks-part1) The Java runtime has been evolving more rapidly in recent years and, after 15 years, we finally got a **new default garbage collector: the G1**. Two more GCs are on their way to production and are available as experimental features: **Oracle's ZGC** and **OpenJDK's Shenandoah**. We at Hazelcast thought it was time to put all these new options to the test and find which choices work well with workloads typical for our distributed stream processing engine, [Hazelcast Jet](https://jet-start.sh/). + ### Relevant JVM Metrics Metric|Details / Reference :---|:--- diff --git a/docs/java_frameworks.md b/docs/java_frameworks.md index b83b063d..71de8984 100644 --- a/docs/java_frameworks.md +++ b/docs/java_frameworks.md @@ -6,6 +6,7 @@ - [Jakarta EE](#jakarta-ee) - [Eclipse MicroProfile](#eclipse-microprofile) - [Spring](#spring) + - [Spring Cloud](#spring-cloud) - [SpringBoot](#springboot) - [SpringBoot with Docker](#springboot-with-docker) - [CI/CD for kubernetes with SpringBoot](#cicd-for-kubernetes-with-springboot) @@ -69,9 +70,14 @@ optimizing Enterprise Java for the microservices architecture. ## Spring - [Spring](https://spring.io/) -- [SpringBoot](https://spring.io/projects/spring-boot) +- [Spring Framework Architecture 🌟](https://www.javacodegeeks.com/2019/02/spring-framework-architecture.html) +- [javatutorial.net: Introduction to Spring Web Framework](https://javatutorial.net/introduction-to-spring-web-framework) +- [javarevisited.blogspot.com: 10 JdbcTemplate Examples in Spring Framework](https://javarevisited.blogspot.com/2020/05/10-jdbctemplate-examples-in-spring.html) +- [medium.com: Top 10 Courses to Learn Microservices in Java and Spring Framework](https://medium.com/javarevisited/top-5-courses-to-learn-microservices-in-java-and-spring-framework-e9fed1ba804d) + +### Spring Cloud - [Spring Cloud](https://spring.io/projects/spring-cloud) - - [Spring Cloud Kubernetes for hybrid microservices architecture](https://medium.com/javarevisited/spring-cloud-kubernetes-for-hybrid-microservices-architecture-f487d67328d0) +- [Spring Cloud Kubernetes for hybrid microservices architecture](https://medium.com/javarevisited/spring-cloud-kubernetes-for-hybrid-microservices-architecture-f487d67328d0) ### SpringBoot - [SpringBoot](https://spring.io/projects/spring-boot) @@ -83,6 +89,8 @@ optimizing Enterprise Java for the microservices architecture. - [javatutorial.net: Spring vs. Java EE](https://javatutorial.net/spring-vs-java-ee) - [medium.com: Spring Cloud kubernetes for hybrid microservices architecture](https://medium.com/javarevisited/spring-cloud-kubernetes-for-hybrid-microservices-architecture-f487d67328d0) - [10 Free Spring Boot Courses and Tutorials for Java Developers](https://medium.com/javarevisited/10-free-spring-boot-tutorials-and-courses-for-java-developers-53dfe084587e) +- [**Spring Boot Istio library**: Spring Boot library for integration with Istio](https://piotrminkowski.com/2020/06/10/spring-boot-library-for-integration-with-istio/) +* [Spring Boot native images. The path towards Spring Boot native applications](https://spring.io/blog/2020/06/10/the-path-towards-spring-boot-native-applications) ### SpringBoot with Docker * [spring.io: spring boot with docker](https://spring.io/guides/gs/spring-boot-docker/) diff --git a/docs/kubernetes.md b/docs/kubernetes.md index b63e44ee..e6fb6e01 100644 --- a/docs/kubernetes.md +++ b/docs/kubernetes.md @@ -24,6 +24,7 @@ - [Helm Kubernetes Tool](#helm-kubernetes-tool) - [Helm Charts repositories](#helm-charts-repositories) - [Helm Charts](#helm-charts) + - [Helm Books](#helm-books) - [Lens Kubernetes IDE](#lens-kubernetes-ide) - [Cluster Autoscaler Kubernetes Tool](#cluster-autoscaler-kubernetes-tool) - [HPA and VPA](#hpa-and-vpa) @@ -150,7 +151,6 @@ * [enterprisersproject.com: Kubernetes: Everything you need to know (2020) 🌟](https://enterprisersproject.com/article/2020/4/kubernetes-everything-you-need-know) * [learnk8s.io: Provisioning cloud resources (AWS, GCP, Azure) in Kubernetes 🌟](https://learnk8s.io/cloud-resources-kubernetes) * [padok.fr: Kubernetes’ Architecture: Understanding the components and structure of clusters 🌟](https://www.padok.fr/en/blog/kubernetes-architecture-clusters) -* [medium.com: Top 15 Online Courses to Learn Docker, Kubernetes, and AWS for Fullstack Developers and DevOps Engineers](https://medium.com/javarevisited/top-15-online-courses-to-learn-docker-kubernetes-and-aws-for-fullstack-developers-and-devops-d8cc4f16e773) * [Allocatable memory and CPU in Kubernetes Nodes 🌟](https://learnk8s.io/allocatable-resources) Not all CPU and memory in your Kubernetes nodes can be used to run Pods. In this article, you will learn how managed Kubernetes Services such AKS, EKS and GKE reserve resources for workloads, operating systems, daemons and Kubernetes agent. * [5 open source projects that make Kubernetes even better: Prometheus, Operator framework, Knative, Tekton, Kubeflow 🌟](https://enterprisersproject.com/article/2020/5/kubernetes-5-open-source-projects-improve) Open source projects bring many additional capabilities to Kubernetes, such as performance monitoring, developer tools, serverless capabilities, and CI/CD workflows. Check out these five widely used options * [**Optimize** Kubernetes cluster management with these 5 tips 🌟](https://searchitoperations.techtarget.com/feature/Optimize-Kubernetes-cluster-management-with-these-5-tips) Effective Kubernetes cluster management requires operations teams to balance pod and node deployments with performance and availability needs. @@ -158,6 +158,8 @@ * [blog.pipetail.io: 10 most common mistakes using kubernetes 🌟](https://blog.pipetail.io/posts/2020-05-04-most-common-mistakes-k8s/) * [4 trends for Kubernetes cloud-native teams to watch in 2020 🌟](https://searchapparchitecture.techtarget.com/tip/4-trends-for-Kubernetes-cloud-native-teams-to-watch-in-2020) Today's software architectural landscape seems to change like the weather. Stay ahead of the curve with these cloud-related trends, including GitOps and service meshes. * [opensource.com: A beginner's guide to Kubernetes container orchestration](https://opensource.com/article/20/6/container-orchestration) Understanding the building blocks of container orchestration makes it easier to get started with Kubernetes. +* [thenewstack.io: 5 Best Practices for Configuring Kubernetes Pods Running in Production](https://thenewstack.io/5-best-practices-for-configuring-kubernetes-pods-running-in-production/) +* [Creating a Kubernetes cloud provider, doesn't required boiling the ocean](https://thebsdbox.co.uk/2020/03/18/Creating-a-Kubernetes-cloud-doesn-t-required-boiling-the-ocean/?utm_sq=gf0mhghh60)
[![Kubernetes architecture](images/kubernetes-pod-creation.png)](https://www.padok.fr/en/blog/kubernetes-architecture-clusters) @@ -300,6 +302,9 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names * [Jmeter](https://github.com/helm/charts/tree/master/stable/distributed-jmeter) * [bitnami: create your first helm chart](https://docs.bitnami.com/kubernetes/how-to/create-your-first-helm-chart/) +### Helm Books +- [Learn Helm](https://www.packtpub.com/cloud-networking/learn-helm) + ## Lens Kubernetes IDE * [Lens Kubernetes IDE 🌟](https://k8slens.dev/) Lens is the only IDE you’ll ever need to take control of your Kubernetes clusters. It's open source and free. Download it today! @@ -400,6 +405,7 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names * [kubedev 🌟](https://relferreira.github.io/kubedev/) is a Kubernetes Dashboard that helps developers in their everyday usage * [Kubectl SSH Proxy 🌟](https://github.com/little-angry-clouds/kubectl-ssh-proxy) Kubectl plugin to launch a ssh socks proxy and use it. This plugin aims to make your life easier when using kubectl a cluster that's behind a SSH bastion. * [K9s - Kubernetes CLI To Manage Your Clusters In Style!](https://github.com/derailed/k9s) K9s provides a terminal UI to interact with your Kubernetes clusters. The aim of this project is to make it easier to navigate, observe and manage your applications in the wild. K9s continually watches Kubernetes for changes and offers subsequent commands to interact with your observed resources. +* [kubectl-images](https://github.com/chenjiandongx/kubectl-images) Show container images used in the cluster. Kubectl-images is a kubectl plugin that shows the container images used in the cluster. It first calls kubectl get pods to retrieve pods details and filters out the container image information of each pod then prints out the final result in a table view. ## Kubernetes Troubleshooting * [Kubernetes troubleshooting diagram 🌟](https://github.com/redhatspain/awesome-kubernetes/blob/master/docs/images/kubernetes-troubleshooting.jpg) @@ -428,8 +434,7 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names * [dzone: kubernetes in 10 minutes a complete guide to look](https://dzone.com/articles/kubernetes-in-10-minutes-a-complete-guide-to-look) * [magalix.com: The Best Kubernetes Tutorials 🌟](https://www.magalix.com/blog/the-best-kubernetes-tutorials) * [35 Advanced Tutorials to Learn Kubernetes 🌟](https://medium.com/faun/35-advanced-tutorials-to-learn-kubernetes-dae5695b1f18) -* [ -* geekflare.com: 14 Kubernetes Tutorials for Beginner to Master](https://geekflare.com/learn-kubernetes/) +* [geekflare.com: 14 Kubernetes Tutorials for Beginner to Master](https://geekflare.com/learn-kubernetes/) ### Online Training * [katacoda.com 🌟](https://www.katacoda.com/) Interactive Learning and Training Platform for Software Engineers @@ -450,6 +455,8 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names ### Famous Kubernetes resources of 2020 * [javarevisited.blogspot.com: Top 5 courses to Learn Docker and Kubernetes in 2020 - Best of Lot](https://javarevisited.blogspot.com/2019/05/top-5-courses-to-learn-docker-and-kubernetes-for-devops.html) +* [medium.com: Top 15 Online Courses to Learn Docker, Kubernetes, and AWS for Fullstack Developers and DevOps Engineers](https://medium.com/javarevisited/top-15-online-courses-to-learn-docker-kubernetes-and-aws-for-fullstack-developers-and-devops-d8cc4f16e773) +* [medium.com: 7 Free Online Courses to Learn Kubernetes in 2020](https://medium.com/javarevisited/7-free-online-courses-to-learn-kubernetes-in-2020-3b8a68ec7abc) * [skillslane.com: 10 Best Kubernetes Courses [2020]: Beginner to Advanced Courses](https://skillslane.com/learn-kubernetes-from-these-best-online-courses/) ## Kubernetes Patterns @@ -501,6 +508,7 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names * [magalix.com: Creating Custom Kubernetes Operators](https://www.magalix.com/blog/creating-custom-kubernetes-operators) * [medium.com: Writing Your First Kubernetes Operator](https://medium.com/faun/writing-your-first-kubernetes-operator-8f3df4453234) * [bmc.com: What Is a Kubernetes Operator?](https://www.bmc.com/blogs/kubernetes-operator/) +* [Writing a Kubernetes Operator in Java Cheat Sheet](https://developers.redhat.com/cheat-sheets/writing-kubernetes-operator-java/) ## Kubernetes Networking * [kubernetes.io: The Kubernetes network model. How to implement the Kubernetes networking model](https://kubernetes.io/docs/concepts/cluster-administration/networking/) @@ -514,6 +522,7 @@ kubectl get secret --namespace=β€Š-o yaml | sed β€˜s/names * [AWS and Kubernetes Networking Options and Trade-Offs (part 1)](https://www.weave.works/blog/introduction-to-kubernetes-pod-networking--part-1) * [AWS and Kubernetes Networking Options and Trade-Offs (part 2)](https://www.weave.works/blog/aws-networking-overview---part-2) * [AWS and Kubernetes Networking Options and Trade-Offs (part 3)](https://dzone.com/articles/aws-and-kubernetes-networking-options-and-trade-of) +* [medium: Service Types in Kubernetes? 🌟](https://medium.com/faun/service-types-in-kubernetes-24a1587677d6) A Service enables network access to a set of Pods in Kubernetes. ### Xposer Kubernetes Controller To Manage Ingresses * [Xposer 🌟](https://github.com/stakater/Xposer) A Kubernetes controller to manage (create/update/delete) Kubernetes Ingresses based on the Service diff --git a/docs/message-queue.md b/docs/message-queue.md index 2806b5ae..9bbfb11e 100644 --- a/docs/message-queue.md +++ b/docs/message-queue.md @@ -16,7 +16,10 @@ - [Data Processing (aka Streaming Data, Data Pipeline or Big Data Pipeline)](#data-processing-aka-streaming-data-data-pipeline-or-big-data-pipeline) - [Apache Kafka](#apache-kafka) - [Banzai Cloud Supertubes (Cloud Native Kafka implementation)](#banzai-cloud-supertubes-cloud-native-kafka-implementation) + - [Apache Pulsar](#apache-pulsar) - [Apache Flink](#apache-flink) + - [Hazelcast JET](#hazelcast-jet) + - [KsqlDB](#ksqldb) - [Red Hat AMQ (ActiveMQ Artemis broker and Apache Kafka)](#red-hat-amq-activemq-artemis-broker-and-apache-kafka) - [Red Hat AMQ Broker (ActiveMQ Artemis)](#red-hat-amq-broker-activemq-artemis) - [Red Hat AMQ Streams](#red-hat-amq-streams) @@ -106,10 +109,22 @@ - [Banzai Kafka Operator](https://github.com/banzaicloud/kafka-operator) - [The benefits of integrating Apache Kafka with Istio](https://banzaicloud.com/blog/kafka-on-istio-benefits/) +### Apache Pulsar +- [Apache Pulsar](https://pulsar.apache.org/) is an open-source distributed pub-sub messaging system originally created at Yahoo and now part of the Apache Software Foundation +- [Pulsar vs Kafka – Comparison and Myths Explored](https://www.kai-waehner.de/blog/2020/06/09/apache-kafka-versus-apache-pulsar-event-streaming-comparison-features-myths-explored/) + ### Apache Flink - [Apache Flink](https://flink.apache.org/) Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale. - [How to set up Apache Flink on Kubernetes for real time data processing](https://ci.apache.org/projects/flink/flink-docs-stable/ops/deployment/kubernetes.html) +### Hazelcast JET +- [Hazelcast JET](https://jet-start.sh/) Open-Source Distributed Stream Processing +- [devops.com: Hazelcast Simplifies Streaming for Extremely Fast Event Processing in IoT, Edge and Cloud Environments](https://devops.com/hazelcast-simplifies-streaming-for-extremely-fast-event-processing-in-iot-edge-and-cloud-environments/) + +### KsqlDB +- [ksqlDB](https://ksqldb.io/) The event streaming database purpose-built for stream processing applications. +- [Kafka Streams and ksqlDB Compared – How to Choose](https://www.confluent.io/blog/kafka-streams-vs-ksqldb-compared/) + ## Red Hat AMQ (ActiveMQ Artemis broker and Apache Kafka) - [**Red Hat AMQ overview**](https://developers.redhat.com/products/amq/overview) - [Red Hat AMQ](https://www.redhat.com/en/technologies/jboss-middleware/amq) = AMQ Broker (Apache ActiveMQ Artemis) + AMQ Streams (Apache Kafka) diff --git a/docs/postman.md b/docs/postman.md index 33668d03..1bcc5774 100644 --- a/docs/postman.md +++ b/docs/postman.md @@ -7,6 +7,7 @@ - [Dzone: how to use postman to manage and execute your APIs](https://dzone.com/articles/how-to-use-postman-to-manage-and-execute-your-apis) - [Dzone: how to download and install postman REST client](https://dzone.com/articles/how-to-download-and-install-postman-rest-client-so) - [Dzone: using postman REST client, quick tips](https://dzone.com/articles/using-postman-rest-client-cleverly-some-quick-tips) +- [Linkedin: API Testing with Postman](https://www.linkedin.com/pulse/api-testing-postman-michael-montgomery/) ## Newman - [Newman](https://github.com/postmanlabs/newman) is a command-line collection runner for Postman diff --git a/docs/rancher.md b/docs/rancher.md index 80758dcc..7d79519a 100644 --- a/docs/rancher.md +++ b/docs/rancher.md @@ -42,6 +42,7 @@ * [K8s vs k3s](https://www.civo.com/blog/k8s-vs-k3s) "K3s is designed to be a single binary of less than 40MB that completely implements the Kubernetes API. In order to achieve this, they removed a lot of extra drivers that didn't need to be part of the core and are easily replaced with add-ons. K3s is a fully CNCF (Cloud Native Computing Foundation) [certified Kubernetes](https://www.cncf.io/certification/software-conformance/) offering. This means that you can write your YAML to operate against a regular "full-fat" Kubernetes and they'll also apply against a k3s cluster. Due to its low resource requirements, it's possible to run a cluster on anything from 512MB of RAM machines upwards. This means that we can allow pods to run on the master, as well as nodes. And of course, because it's a tiny binary, it means we can install it in a fraction of the time it takes to launch a regular Kubernetes cluster! We generally achieve sub-two minutes to launch a k3s cluster with a handful of nodes, meaning you can be deploying apps to learn/test at the drop of a hat." * [**k3sup (said 'ketchup')**](https://github.com/alexellis/k3sup) is a light-weight utility to get from zero to KUBECONFIG with k3s on any local or remote VM. All you need is ssh access and the k3sup binary to get kubectl access immediately. * [Install Kubernetes with k3sup and k3s](https://medium.com/@alexellisuk/walk-through-install-kubernetes-to-your-raspberry-pi-in-15-minutes-84a8492dc95a) +* [k3s-gitlab](https://github.com/apk8s/k3s-gitlab) k3s + Gitlab install notes. Steps for utilizing k3s to manage a self-hosted Gitlab instance. ### K3S Use Cases - [K3S Use Cases](https://www.youtube.com/watch?v=2LNxGVS81mE):