Live is streaming live. Watch now.

Tanzu Developer Center Blog


Demystifying the Options Pattern in .NET

Layla explains the Options pattern using a multi-bit screwdriver.

Layla Porter August 7, 2023

In this video, Layla explains how you can utilise the Options Pattern for Configuration in a .NET application using a multi-bit screwdriver.

If you have any questions or ideas please feel free to reach out to Layla on one of the following platforms.

Email: laylap@vmware.com
Twitter: @LaylaCodesIt
GitHub: layla-p
YouTube: LaylaCodesIt

Read more

Beyond cluster-admin: Getting Started with Kubernetes Users and Permissions

Getting Started with Kubernetes users and permissions using certificates, tokens, and RBAC

Tiffany Jernigan & Jérôme Petazzoni July 21, 2023

We’ve all done it: working on our Kubernetes clusters with “cluster-admin” access, the infamous equivalent of “root”. It makes sense when we’re just getting started and learning about Pods, Deployments, and Services and we’re the only one accessing the clusters anyway; but soon enough, we have entire teams of devs and ops and CI/CD pipelines that require access to our precious clusters and namespaces. Are we going to YOLO and give them our admin certificate, token, or whatever else we use to authenticate? Hopefully not!

In this blog post, we are going to explain the various concepts and features that will let us implement fine-grained permissions on Kubernetes clusters. First, we will give some definitions and remind us of the difference between authentication and authorization. Then, we will talk about the various methods available to provision Kubernetes users. We will see that available strategies vary between on-premises and managed cloud clusters. Finally, we’ll explain how RBAC (Role-Based Access Control) is used to grant permissions at various levels (namespace or cluster scope).

For a higher level version of this blog, check out the corresponding talk:

And slides.

Auth-what?

The word “auth” is often used in the context of access control to designate two distinct, security-related concepts : …

Read more

Getting Started with Spring Data REST and PostgreSQL

Steven Pousty June 5, 2023

I just want to get it out there—once I grokked Spring Data REST, I was sad it took me this long to find it. Hook up Java Persistence Annotation (JPA) and Hibernate to your Spring Boot app, add the Spring Data REST (SDR) dependency, and then a few lines of annotated Java code, and BOOM you have a REST API. As an added bonus, it does the right thing and actually makes your REST API automatically accessible to a Hypermedia as the Engine of Application State (HATEOAS) client.

Having used it a bit more, I need to temper this enthusiasm. SDR enforces HATEOAS by default and you have to put in extra work to turn it off. I feel like HATEOAS is great in theory, and not practical in practice, especially when other humans are programming against your REST API.

To be more precise, when I talk about REST in this blog post I am referring to Level 2 maturity in Richardson’s model of API maturity. In my work, and in talking with other developers, the Fielding level of REST, while interesting, is not really practical in a lot of their use cases. There are few clients, especially in the major web and mobile frameworks, working with a Level 3 API. The benefit from implementing the full REST mantra provides minimal value compared to the extra effort needed to implement it.

This is a long way of saying, be ready for a HATEOAS API, and know that you will have to put in a little work to get it return …

Read more

The circuit breaker pattern for a more resilient app

Layla explains the circuit breaker pattern from her kitchen.

Layla Porter March 7, 2023

In this video, Layla explains what the circuit breaker pattern is, when to use it, and how to implement it in .NET with C# and Polly.

Enjoy! And watch out for Easter Eggs!

If you have any questions or ideas please feel free to reach out to Layla on one of the following platforms.

Email: laylap@vmware.com
Twitter: @LaylaCodesIt
GitHub: layla-p
YouTube: LaylaCodesIt

Read more

Configuration Isolation and Promotion: Why did the config property cross the road?

Configuration (config) should exist in the environment and not be packaged with apps. Each build of an app is a single artifact that has many deployments in different environments. A deployment in one environment must have its config isolated from others to avoid config pollution. Teams need to determine a promotion strategy for moving config between environments.

Scott Steele February 16, 2023

Dig, if you will, this real world example… In which some engineers believe that they can better meet their product’s service level objectives (SLOs) by tuning their database connection pooling. They decide to conduct an experiment in development by making changes to connection pooling properties in a base configuration file shared by all applications in the environment because they believe the change will benefit all apps (i.e., they want to make a global change to just their development environment). The change is aimed towards measuring its impact before and after.

All of this is well-intentioned and good, except for the fact that the change to the base configuration file is visible to applications in other environments, including production. Eventually, one of the apps in production restarts and fetches its configuration that now includes the change that was only intended for development. The connection pooling change adversely impacts its performance, and now your customers are affected. How did this happen?

Production’s configuration set was polluted by a development configuration change. The problem is that the same backing configuration repository was used across environments. Let’s say that engineers even had separate configuration files for environment-specific properties and assumed that file-based seclusion would be enough. It was not.

This article explores some …

Read more

Spring Cloud Azure 5.0 is now Generally Available

Josh Long January 26, 2023

We?re very pleased to announce that Spring Cloud Azure 5.0 is now generally available.

This major release includes the following features, improvements, and documentation updates:

To try Spring Cloud Azure 5.0, simply add the following dependency BOM to your project:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-dependencies</artifactId>
      <version>5.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Spring Boot 3 and Spring Cloud 2022.0.0 integration

Spring Boot 3 and Spring Cloud 2022.0.0 bring many exciting features, requiring some significant changes to Spring Cloud Azure to fully leverage them.

Noteworthy changes in this version

  • Deprecated API upgrades, Azure/azure-sdk-for-java#31543:
    com.azure.spring.cloud.autoconfigure.aad.implementation.oauth2.AadOAuth2AuthenticatedPrincipal class removed …

Read more

A Bootiful Podcast: GraalVM advocate Alina Yurenko on a Bootiful Podcast

Josh Long January 26, 2023

Liiiive from New York, it?s a Bootiful Podcast! This week I (@starbuxman) talk to Developer Advocate for GraalVM at Oracle Labs, and legend, Alina Yurenko (@alina_yurenko)

Read more

This Week in Spring - SpringOne Essentials 2023 edition - January 24th, 2023

Josh Long January 24, 2023

Hi, Spring fans! Welcome to another installment of This Week in Spring! Today is a very day for you see, today we kick off SpringOne Essentials, the online incarnation of SpringOne, online. We?ll see you live, on stream, in just a few hours!.

SpringOne Essentials is going to be amazing, but before we get there, and learn about all the big things in the Spring ecosystem for the last year, let?s look at all the big things in the last week, with this week?s recap!

Read more

A Bootiful Podcast: Dr. Amanda Martin, Gradle developer advocate

Josh Long January 19, 2023

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks with Gradle developer advocate Dr. Amanda Martin (@DrAmandaLMartin)

Read more

This Week in Spring - January 17th, 2023

Josh Long January 17, 2023

Hi, Spring fans! Welcome to another installment of This Week in Spring! I went to Helsinki, Finland, last week, and this week I?m in Atlanta, Georgia, to speak at the Atlanta Java User Group. And, of course, next week, I?ll be in New York to join a viewing party for the airing of SpringOne Essentials. You?re going to join us, I trust? It?s going to be awesome!

Look, it?s Tuesday. Tuesdays are no fun. We?re three solid days away from fun winter ski slopes from Friday. But that?s OK because every day is a chance to learn. And this week?s no exception: we?ve got a ton to look at it, so let?s dive right into it!

Read more

The Importance of Ubiquitous Language

Exploration of Ubiquitous Language - What it means, how it helps, and how it is discovered and maintained.

Greg Ball January 13, 2023

Good communication is one of the hardest things to be effective at. In relationships, in business, in teams, communication has and continues to be at the top of the list when it comes to what makes them good or bad. Core to communication in general, is the ability to speak the same language. On a software team, this can be accomplished by speaking a language that is ubiquitous.

Ubiquitous

[yoo-bik-wi-tuhs] adjective

present, appearing, or found everywhere

How can a “ubiquitous” language help how you talk to your teams, your users, and the business (stakeholders and end-users)? What do you need to do to discover it, and how should it be used to be most effective? Before you dive into the answers to these questions, let’s start with the basics.

What is ubiquitous language?

Ubiquitous language is a set of unambiguous vocabulary shared by all members and stakeholders of a product team. Eric Evans talks about “Ubiquitous Language” in his book Domain Driven Design: Tackling Complexity in the Heart of Software.

Ubiquitous Language is modeled within a Limited context, where the terms and concepts of the business domain are identified, and there should be no ambiguity.

For those working on a balanced team, this means that the product manager(s), designer(s), and engineer(s) use the same terminology to talk about their product, but more importantly, …

Read more

A Bootiful Podcast: Mario Fusco, the Drools rules engine project lead and fellow Java Champion

Josh Long January 12, 2023

Hi, Spring fans! In this episode I talk to Drools lead Mario Fusco (@mariofusco) about the rules engine Drools and its integrations with Spring, Olivetti computers, and so much more

Read more

This Week in Spring - January 9th, 2023

Josh Long January 10, 2023

Hi, Spring fans! As I write this I?m on a plane winging my way to Helsinki, Finland. A new year and new journeys begin. It?s going to be cold there. Wish me luck! Do you know what always warms me up? The thrill of learning. And this week?s no different. This week we?ve got some good stuff line up so let?s get right into it!

I?m starting to put out easy-to-remember visual cards introducing a blink-and-you-?ll-miss-it aspect of awesomeness in the Spring ecosystem as part of my ?Spring Tips? (@springtipslive) series. So now you?ll be notified of not only new videos but might get some useful information directly in the tweets themselves, too.

Read more

A Bootiful Podcast: Spring legend Ramnivas Laddad

Josh Long January 5, 2023

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Spring and cloud legend, Spring Cloud Connectors founder, and Cloud Foundry founder, Ramnivas Laddad (@ramnivas)

Read more

This Week in Spring - Jan 3rd, 2023

Josh Long January 3, 2023

Hi, Spring fans! Happy new year! It?s 2023 already! Who saw that comin?? I sure didn?t. This year promises to be more amazing than ever, and I can?t wait to be a part of it.

As usual, the first week of January is when we mark the date of the first installment of this humble roundup, This Week in Spring, waaaay back in the first week of January 2011! 12 years of This Week in Spring! Now that?s consistency!

And it?s only possible because of you, dear community. Thank you. You, who have been consistently excellent every week of the year for years and years, are truly the reason for the season, and we appreciate you. This week is no exception! There?s a ton of great content, so let?s kick the year off right!

Read more

Getting Started with Kubernetes

Tiffany Jernigan December 31, 2022

Docker

alt_text

In 2013, Docker came along and changed the container’s space. People began taking their giant monolithic applications, breaking them down into smaller components, and running them in containers.

Generally the container image, which encapsulates everything you need to run your application, is stored in a small, light-weight image that can be run on nearly any machine in a repeatable way.

With the packaging and distribution comes a simple way to run immutable infrastructure where you can scale up or down based on requirements.

Containerizing

alt_text

Containers made it easy to build and scale cloud-native applications.

Generally the container image, which has everything you need to run your app, can be run on nearly any machine and is therefore easily scaled As containers started to become more popular people started to deploy them at scale, and at scale there were more and more machines and more containers running on them.

alt_text

Kubernetes

alt_text

Kubernetes was created to fill this gap. It helps users focus on their applications instead of worrying about building cluster management software. And managed Kubernetes services simplify things further.

At its core, Kubernetes is an open-source container management platform. It’s built to help you run your containers at scale and comes equipped with features and functions to build proper distributed applications using the 12-factor app …

Read more

Cloud Native Security For The Rest Of Us: Part 2

Cloud Native Security for non security folks or those who are newer to security. This is part 2. In this part, we are going to roll on with the security topics, and tackle permission management, secrets management, and more!

Tiffany Jernigan & Jérôme Petazzoni December 31, 2022

In the first part of this series, we introduced some concepts specific to Cloud Native security, in particular the “4 C’s of Cloud Native security”. We gave a number of leads and insights about securing Kubernetes as a platform. In this next part, we’re going to roll on with the security topics, and tackle permission management, secrets management, and more!

User Management and Permissions

When we develop with a local Kubernetes cluster like minikube or KinD, we usually don’t have to worry too much about permissions. In these clusters, we typically have access to everything. We are cluster-admin or kubernetes-admin or some equivalent of the good old root user on UNIX systems. (Technically, we belong to the system:masters group, which is granted the cluster-admin role.)

However, when deploying to “real” clusters (production or even staging or testing environments), we will hopefully use fine-grained permissions. We might only get permissions to deploy to a specific namespace. Or perhaps, we won’t get permissions to create/update/delete anything at all, because deployment will be done by a CI/CD pipeline, and all we can do is view resources, logs, and events, for troubleshooting purposes. It might be a good idea to grant even narrower permissions on production systems; for instance, making sure that we can’t use kubectl exec …

Read more

CKAD Practice Questions

CKAD practice questions for the updated exam that was changed in September 2021

Tiffany Jernigan December 31, 2022

The Linux Foundation has multiple exams available for Kubernetes certifications. One is the Certified Kubernetes Application Developer (CKAD) exam which “certifies that candidates can design, build and deploy cloud-native applications for Kubernetes”.

In terms of knowledge, the exams go in the following order with difficulty increasing:

When I took the CKAD exam in March 2022, it was the September 2021 version, and its curriculum was broken into the following sections (which looks the same as it does now at the writing of this blog, though the detailed outline is a little different):

  • Application Design and Build (20%)
  • Application Deployment (20%)
  • Application Observability and Maintenance (15%)
  • Application Environment, Configuration and Security (25%)
  • Services and Networking (20%)

Check out this blog post to see more details about each section; You can also go to the GitHub CNCF curriculum page to see them per Kubernetes version for the various exams.

When preparing for the exam, I gathered questions and ideas from other folks, and I’d like to share these questions with you as well so that you can use them to prepare for the CKAD exam (or just practice your Kubernetes-fu). Of course, …

Read more

A Bootiful Podcast: DaShaun Carter: amazing human being, father, friend, engineer, and fellow Spring Developer Advocate

Josh Long December 29, 2022

Hi, Spring fans! this episode, we turn it to 11 and ring in the new year with a fantastic human being, father, friend, engineer, and fellow Spring Developer Advocate: DaShaun Carter (@dashaun).

Happy new year!

Read more

This Week in Spring - Happy New Year 2023 edition - December 27th, 2022

Josh Long December 27, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! It?s 27 December as I write this and - being honest - I couldn?t be happier. It?s raining outside. I?m in a warm cozy office. Good music is playing. People are asleep in my home. I can hear the raindrops and wind outside the window. I?m at peace as I code. And code I have. I?ve been updating my blog, and a half dozen little side projects, to the new Spring Boot 3. This has given me a chance to do a little, shall we say, Spring cleaning, and also update my Github Actions to the latest and greatest. I?m pleasantly surprised by how many builds I?ve switched over to 3.0 and then used the AOT engine to build a GraalVM native image and it just worked!

How were or are your holidays going? My family and I had a lovely Christmas, which we don?t take for granted how hard the world seems to be these days. We?re all making our new years resolutions and preparing for the exciting new year ahead, too. When next we talk, it?ll be 202*3*! So, let me say in advance: happy new year!! Today?s the 27th, but by the 30th here in California it?ll start being 2023 for some people in other parts of the world. It?s crazy how fast time flies! And that?s also true with roundups! I just wrote last week?s, and here we are writing another! There?s always a lot to cover so let?s dive right into it!

Read more

A Bootiful Podcast: Field CTO and Chief Evangelist at Gradle Justin Reock

Josh Long December 22, 2022

Hi, Spring fans and happy holidays!! In this installment, Josh Long talks to Field CTO and Chief Evangelist at Gradle Justin Reock.

Read more

This Week in Spring - December 20th, 2022

Josh Long December 20, 2022


Hi, Spring fans! It?s the 20th of December, 2022 as I write this, which means that by the time we meet again, here on this humble blog, Tuesday next week, Christmas will already have come and gone. Chanukah is already here! Time is sure flying! So, to those of you who celebrate: Happy Chanukah, Merry Christmas, and happy holidays!

There?s arguably nothing better than the gift of knowledge, so let?s dive right into this week?s roundup:

Read more

This Week in Spring - December 13th, 2022

Josh Long December 13, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! I truly, absolutely, can not believe that we?re nearly done with the year already! Have you made your new years? resolutions? Submitted your expense reports? It?s that time of the year when I?m going to start focusing on staying warm and avoiding undue work for a while :-) I hope you do too. This is why I?m glad I write these roundups: I hope they save people from extra, undue work! So, with that? let?s dive into the roundup!

Read more

Cloud Native Security For The Rest Of Us: Part 1

Cloud Native Security for non security folks or those who are newer to security. This is part 1.

Tiffany Jernigan & Jérôme Petazzoni December 9, 2022

This blog is the first part of a three-piece blog that comes out of a (much more condensed and lighter) talk done at Open Source Summit and Cloud Native Security Con at KubeCon. You can find a video recording here and the slides here.

alt_text

In modern applications that process information for thousands, or even millions of users, the impact of security breaches can be dramatic. It can be damaging for the brand (especially when it reveals negligent security postures). It can also cause significant harm to the users of the applications, including financial damage if for example, credit card or social security numbers are stolen (leading to potential identity theft) or even physical threats when the real addresses of users targeted by extremist groups are leaked.

Securing Cloud Native applications can seem daunting, because they have a larger footprint. Beyond the application itself, we also need to think about the platform that it runs on (for instance: Kubernetes clusters), the various cloud services that it leverages, and sometimes its entire software delivery pipeline: base container images, application dependencies, CI/CD platforms…

The principles of Defense in depth still apply to Cloud Native applications. This means that we won’t rely on a single “silver bullet” solution, but rather on a whole host of defense mechanisms. Should one of these mechanisms fail or …

Read more

A Bootiful Podcast: Vaadins Marcus Hellberg on rich UIs, Spring Boot 3, GraalVM native images, and more

Josh Long December 8, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Vaadin?s Marcus Hellberg (@marcushellberg) about rich UIs, Vaadin Flow, the new Hilla Framework, GraalVM native image compilation, and so much more

Read more

Do more with Azure Spring Apps ??? scale to zero and enhance productivity

Josh Long December 7, 2022

In 2020, Spotify coined the term "Golden Path? to refer to a supported approach and set of components to build and deploy software. Having these paths simplifies the development process, lets developers focus on their applications instead of infrastructure and speeds time to production. Microsoft and VMware have partnered to make Azure Spring Apps a golden path for deploying and scaling Spring applications in the cloud. And with new capabilities like the scale to zero and developer productivity enhancements, Azure Spring Apps now offers an even more economical and optimized route to get your Spring applications into production.

1. Start from zero and scale to zero ? consumption plan

We are introducing a new consumption pricing plan for Azure Spring Apps ? you can start from zero and scale to zero vCPU for efficient resource utilization. With this serverless application-centric plan, apps can scale in response to HTTP requests, events, or simply run as always-on background jobs. The consumption plan does not have a base unit. You can scale to zero and pause billing when apps are not in use. You can use this new plan to build or migrate web apps and web API endpoints, event-driven processing apps, microservice apps, and many more.

The consumption plan is in private preview. If you would like to try, please sign up

Figure 1 ? introduces the Azure Spring Apps consumption …

Read more

This Week in Spring - December 6th, 2022

Josh Long December 6, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! How are you? You know what I?ve wanted to do? See my friends on the Spring team in person since the pandemic descended. And, I?m overjoyed to relate, I?ve just had the privilege of a nice meeting with several of them last night. And I?m going to see more of them today! Seriously. I feel like I won the lottery. I?ve missed my friends. Hug your friends and family, friends. You never know when the next pandemic (or life in general) will put distance between you and them. So, in order to close that distance, I?m going to go back to meetings with them, and I?ll leave you with yet another week?s curated list of content. (Can you believe we?re like four weeks away from 2023?)

Read more

A Bootiful Podcast: Java Champion Gunnar Morling about messaging middleware, Debezium, change data capture, and more.

Josh Long December 1, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Java Champion Gunnar Morling (@gunnarmorling) about messaging middleware, Debezium, and more.

Read more

This Week in Spring - November 29th, 2022 (Spring Boot 3 has arrived)

Josh Long November 29, 2022

Hi, Spring fans! It?s here! It?s finally here, at long last! Spring Boot 3!! And of course with Spring Boot 3.0 comes a whole portfolio of integrated projects that have also been updated! Remember, a huge theme in this release is support for GraalVM native images, and that?s now supported across the board. You know what to do: start.spring.io.

I put together a Spring Tipds video introducing some of the major themes of Spring Framework 6 / Spring Boot 3.

I also did an in-depth look at the new GraalVM support powered by Spring?s ahead-of-time (AOT) engine.

There?s so much else to talk about this week, but I really can?t stress this enough: Spring Boot 3 is here! In some ways, it feels like this release has been more than four years in the making! It?s amazing, and I can?t wait for people to get to production with it. Without further ado, this week?s roundup:

Read more

Cultivating Vibrant Communities of Practice

We have found the most effective way to scale practices across an organization is through the cultivation of vibrant communities of practice where learning, growth, and mastery of the craft are celebrated.

Brian Jennings November 29, 2022

We have found the most effective way to scale practices across an organization is through the cultivation of vibrant communities of practice where learning, growth, and mastery of the craft are celebrated. Why? By bringing people together with a common passion, each social connection created becomes a new potential channel for learning.

Community gathering in an office

The concept behind a Community of Practice (CoP), is not a new idea. Humans have been coming together to learn from one another long before Etienne Wenger and Jean Lave coined the term in their 1991 book, Situated Learning.

In the book, Wenger and Lave identified that learning, at its core, is a social process and not something that can happen in a learner’s mind alone. Their book is a commentary on how a community allows practitioners of varying skill levels to connect, speak about activities, and share knowledge in a way that propels their learning and growth.

“Communities of practice are groups of people who share a concern or a passion for something they do and learn how to do it better as they interact regularly.”

Introduction to Communities of Practice by Etienne & Beverly Wenger-Trayner

Even though Wenger and Lave focused on communities of midwives, tailors, and butchers, the process of learning through communities is powerful and can be applied to any craft!

At VMware Tanzu Labs, we work with client organizations to …

Read more

Spring Tips: the road to Spring Framework 6: the new Ahead-of-Time Compilation Engine and GraalVM

Josh Long November 23, 2022

Hi, Spring fans! Spring Boot 3 is here (or will be tomorrow, on the 24th of November, 2022, to be more precise!), bringing a fantastic new Ahead-of-Time (AOT) compilation engine that supports GraalVM native images. Join me, and we?ll dive deep into the engine and its interactions with the Spring component model.

This video is a detailed masterclass on the new AOT engine. It starts by examining the everyday usecases of an application developer and delves deeper and deeper into the engine, treating concerns that library and framework developers will care about.

Enjoy!

Also, Happy thanksgiving (if you celebrate) from us to you!

Read more

This Week in Spring - November 22nd, 2022 - Spring Boot 3 and Thanksgiving edition!

Josh Long November 22, 2022

Hi, Spring fans! It?s Tuesday, the 22nd of November, 2022, as I write this, which means we?re two days away from Spring Boot 3 and Thanksgiving. Spring Boot 3, I?ve written about in abundance so I won?t rehash that. If you want to learn more about some of the amazing new features in Spring Framework 6 and Spring Boot 3, perhaps check out my Spring Tips installment introducing them in this episode:

And, of course, a major new feature in Spring Boot 3 is the new ahead-of-time (AOT) engine, about which I speak at great length in tomorrow?s new installment of Spring Tips:

This video is done so that you can watch the first part as an application developer and get a lot out of it. Folks who want to take the concepts further - as a library, or framework, or developer, can carry on ?till the end of the video. Either way, I hope you learn something interesting in your journey to production with Spring Boot 3, due - again - in less than 48 hours? time!

I mentioned Thanksgiving. The US isn?t the only country to have such a holiday, so I?m perhaps telling some folks things they already know, for which I?m sorry, but: Thanksgiving is a (self-explanatory) holiday in which people are encouraged to be thankful. To take stock in our lives and find reasons for gratitude. My friends, I am grateful for you. I?m sure I speak for the entire Spring team (celebrating Thanksgiving or not!) when I …

Read more

Deploying Kubernetes Apps Using VMware Tanzu Application Platform and Tanzu Service Mesh (Beta)

Modern applications are comprised of microservices and require services such as service discovery, encryption, traffic controls, and access controls. For applications created on VMware Tanzu Application Platform, these network and security services are enabled with VMware Tanzu Service Mesh, an Istio-based solution that connects and secures microservices across any cluster or cloud boundary. This document showcases the first phase of the integration, where Tanzu Application Platform Kubernetes workloads are connected and secured within clusters, across clusters and across clouds.

Vishal Narayan November 21, 2022

Deploying Kubernetes Apps using VMware Tanzu Application Platform and Tanzu Service Mesh (Beta)

Modern applications are comprised of microservices and require services such as service discovery, encryption, traffic controls, and access controls. For applications created on VMware Tanzu Application Platform, these network and security services are enabled with VMware Tanzu Service Mesh, an Istio-based solution that connects and secures microservices across any cluster or cloud boundary. This document showcases the first phase of the integration, where Tanzu Application Platform Kubernetes workloads are connected and secured within clusters, across clusters and across clouds. The Tanzu Service Mesh global namespace provides secure connectivity with mutual transport layer security (mTLS) and service discovery, resiliency with actionable service-level objectives (SLO) and global server load balancing (GSLB) integration, and security with micro-segmentation and API security across Kubernetes clusters and clouds. You can learn more about Tanzu Service Mesh global namespaces in this blog and demo.

Please follow the subsequent instructions to set up a Tanzu Application Platform application deployed on Kubernetes with Tanzu Service Mesh.

Tanzu Service Mesh setup

Step 0: Check prerequisites

Read more

A Bootiful Podcast: Java Champion, legendary engineer, and teacher Trisha Gee

Josh Long November 17, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Java Champion, legendary engineer, and teacher Trisha Gee (@trisha_gee) bout her extraordinary career working at organizations like LMAX, MongoDB, Jetbrains, and her new books, Heads First Java, and Getting to Know IntelliJ IDEA.

Read more

This Week in Spring - November 15th, 2022

Josh Long November 15, 2022

Hi, Spring fans! How?re you doin? this fine Tuesday morning? I?ve returned home to San Francisco and am up and at ?em nice and early to catch a flight to Seattle, where I?ll speak at the Java User Group tonight. If you?re in Seattle, don?t miss it!

We?ve got a ton of cool stuff to get into this week, but let?s not bury the lede here: Spring Framework 6 comes out tomorrow, Wednesday, the 16th of November, 2022! And you know where to go to get the bits: the Spring Initialzr, start.spring.io!

Let?s dive into this week?s roundup!

Read more

A Bootiful Podcast: RabbitMQ engineer Arnaud Cogolu??gnes on the new and novel in RabbitMQ

Josh Long November 9, 2022

Hi, Spring fans! In this episode, Josh Long (@starbuxman) talks to RabbitMQ engineer Arnaud Cogolu?gnes (@acogoluegnes) on the new and novel in RabbitMQ

Read more

This Week in Spring - November 8th, 2022

Josh Long November 8, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! I?ve been busy this last week! I?ve been visiting with customers and talking to the community here in South East Asia. I was in Malaysia last week, and now I?m in Bangkok, Thailand. I?m near the end of my time here in SE Asia, which makes me sad. I?m dearly going to miss the food and the weather, but time waits for no person, and it?s almost time to go home.

And with time comes a jam-packed roster of new things we can read and learn from. So, without further ado, let?s dive right into it!

Read more

A Bootiful Podcast: Java Champion, legend, and prolific open source contributor Andres Almiray

Josh Long November 3, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Java Champion, legend, and prolific opensource contributor Andres Almiray (@aalmiray)

Read more

This Week in Spring - November 1st, 2022

Josh Long November 1, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! How?re you doin?? I hope you?re doing well and had a great Halloween if you celebrate. I?m doing great. I?m in sunny Kuala Lumpur, Malaysia, eating delicious food and hanging out with amazing people. Tomorrow, I?m off to Penang, Malaysia, for a little tourism before I get back to a more code-driven kinda fun: I?ll be doing a developer event looking at the latest-and-greatest from Spring Boot 3 here in Kuala Lumpur on the 11th of November - ten short days from now! - so please join me!

Also, I just joined Mastodon - a decentralized and open-source Twitter; I?m not leaving Twitter, of course, but I would love to make new friends and grow the community there: @[email protected]!

Anyway, my friends, housekeeping aside, we?ve got a ton of amazing things to talk about today so let?s dive right into it!

Read more

Bootiful Podcast: Spring Mad Scientist Andy Clement on SpringOne 2022, AOT, Azure Spring Apps, and more

Josh Long October 27, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Spring mad scientist Andy Clement (@andy_clement) about the new native support in Spring Boot 3, SpringOne 2022, and Azure Spring Apps, among other things

Read more

Spring Tips: the road to Spring Boot 3: Spring Framework 6

Josh Long October 26, 2022

Hi, Spring fans! In this installment, we begin a journey to Spring Boot 3, due end of November 2022. In this installment, we?ll look - at a very high level - at some of the amazing features in Spring Framework 6, which underpins Spring Boot 3.

Want to learn more about Spring Framework 6 and Spring Boot 3? Join us at SpringOne 2022! use the code S1VM22_Advocate_200 for $200 off the price of admission!

Read more

KubeCon NA ’22 VMware Workshops for Fun and Profit!

Come to the VMware booth during expo hours October 26–28, 2022, to try out some short workshops using open source software!

Tiffany Jernigan October 25, 2022

Come to the VMware booth during expo hours October 26–28, 2022, to try out some short workshops using open source software! We have workshops for everyone. Engineers will be at the booth to help and to answer any questions you might have. No laptop needed; just bring yourself!

If you’re unable to come to KubeCon in person, don’t worry; you can do these workshops from the virtual booth as well.

Millennium Falcon Lego set

Each workshop you do will give you another chance to win a Millennium Falcon Lego set!

For the virtual booth, there will be one winner for the week. For the booth workshops, we will contact one winner each day!

Our beginner and advanced workshops will help you learn a number of cloud native tools.

New to containers and Kubernetes?

Are you new to containers or Kubernetes? We have workshops just for you: a Container Basics workshop and a Kubernetes Fundamentals workshop!

Carvel

New to the Carvel tool suite? We have an Introduction to the Carvel Tools workshop and a couple of other tool-specific workshops! Carvel provides a set of reliable, single-purpose, composable tools that aid in your application building, configuration, and deployment to Kubernetes.

Writing lots of YAML can be pretty tedious, especially when you’re reusing a lot of the same or similar lines. That’s where ytt, a tool in the Carvel suite, comes in. You can use it for templating your YAML. Learn about it with the …

Read more

This Week in Spring - October 25th, 2022

Josh Long October 24, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! When last we spoke, I was in Las Vegas, NV, for the JavaOne show. It was amazing! I?m in sunny Singapore, then off to Malaysia and Thailand. It?s the first time I?ve been to any of these places since 2019! How good it is to be back! I?ve so missed it.

The Spring team is busy preparing for both Spring Boot 3 (and the Spring Framework 6 release that underpins it) and SpringOne 2022. Have you booked your ticket for SpringOne 2022 yet? It?s going to be held in sunny San Francisco, and - of course - it?ll be the absolute best place to learn about Spring Framework 6, Spring Boot 3, GraalVM, the new Ahead-of-time compilation engine in Spring Boot 3, and more. Also, it?s a rare chance to hang out with the Spring team proper. It?s been years since any of us has had the chance to do that, myself included! Don?t miss this! Register now, and get a $200 discount using the following code: S1VM22_Advocate_200.

Also, the full content schedule is now available online! Check it out

Anyway, with that out of the way, we?ve got a lot to cover this week, so let?s dive right into it!

Read more

A Bootiful Podcast: Microsofts Asir Selvasingh on Azure Spring Apps, Java at Microsoft, application security, and more

Josh Long October 20, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxma) talks to his friend, Microsoft?s Asir Selvasingh (@asirselvasingh), about Azure Spring Apps, Java at Microsoft, Spring, application security, and more. Want to learn more? Join us at SpringOne (6-8 December 2022)!

Want to meet amazing people like Asir? Join us at SpringOne 2022! Register now and get $200 off with this discount code S1VM22_Advocate_200.

Read more

This Week in Spring - October 18th, 2022

Josh Long October 18, 2022

Hi, Spring fans! How?re you doin?? I?m doin? alright! Last week I was in Antwerp, Belgium, for the amazing Devoxx BE show. I did a presentation with my friend and hero James Ward on Spring and Kotlin (that was voted third most-liked talk at a show with more than 250 speakers!) That was a personal career highlight for me - it?s not often you get to win and have fun in life. And, as if that wasn?t awesome enough, this week I am in Las Vegas, NV, for JavaOne! Fingers crossed, this week will go smoothly, too! Both Devoxx and JavaOne are the first such shows since at least before the pandemic. It?s been a very long time in coming and I?m elated, overjoyed, to be able to be here.

And, of course, I?m super excited about SpringOne 2022! Also, the first in-person show of its kind since before the pandemic! It?s going to be amazing. Have you registered? If not, you might consider using this registration code - S1VM22_Advocate_200.

And this week?s busy roundup reflects the usual flurry of activity on the Spring team as we ready releases for our end-of-November timelines for Spring Framework 6 and Spring Boot 3, which means we?ve got a ton of stuff to get into this week, so let?s!

Read more

Spring at JavaOne 2022

Josh Long October 16, 2022

Hi, Spring fans! It?s Sunday the 16th of October as I write this and I?m winging my way to sunny Las Vegas, Nevada, where I?ll be attending (and presenting at) the first JavaOne show in years! It didn?t exist as the JavaOne we know and love for years, even before the pandemic interrupted life as we know it worldwide. So this isn?t just the first JavaOne since 2019, it?s [the first JavaOne since 2017](https://www.infoq.com/news/2018/04/oracle-kills-java-one/_! I can?t wait to be there, to see the amazing community, to soak up the sun and fun with my teammates and friends in the ecosystem. And we want to see you, too.

There are a few of us doing talks from the Spring team and we?d love to see you!

First of all: we have a booth, so join us there.

There are going to be a bunch of great talks from those of us on the Spring team and in the Spring community. Here?s a list of some of the ones I?m interested in seeing:

  • I?ll be doing my talk, Kubernetes Native Java [LRN1401], looking at all the latest and greatest in the Spring ecosystem, including Spring Boot 3 and Spring Framework 6, on
  • Observability: Beyond the Three Pillars with Spring [LIT3834] with Jonatan Ivanov and Josh Cummings, Spring team
  • To Production and Beyond: Metrics with Micrometer [LRN3692] by Erin Schnabel, RedHat, and Jonatan Ivanov, Spring team
  • Das Boot: Diving into Debugging Spring Boot Applications …

Read more

Learn more about Spring Framework 6 and Spring Boot 3 in these two great talks from Devoxx 2022

Josh Long October 15, 2022

Hi, Spring fans! I was just at Devoxx in Belgium, where hundreds of experts from across the Java ecosystem converged for the first time since 2019 to deliver their biggest and best.

I could do a proper trip report, but I really just came here to point you to two talks from two of my amazing teammates, St?phane Nicoll (@snicoll) and Brian Clozel (@bclozel), who have been very hard at work on both Spring Framework 6 and Spring Boot 3, both of which will land by the end of November, 2022. These are brand new generations of the framework, implying huge new paradigms and new opportunities for developers.

This first is a broader, whirlwind tour of the new features in Spring Framework 6 (which bubble up into Spring Boot 3).

This second one introduces the new ahead-of-time (AOT) support in Spring Framework 6 and Spring Boot 3, which makes it trivial to build GraalVM native images.

NB: please ignore the metadata for the YouTube videos. Both talks feature both speakers, and there is no mention whatsoever of React and JavaScript and the like. I think that was a metadata issue with the publication of the videos on YouTube, which will hopefully be resolved.

Enjoy!

If you missed this event, that?s OK - there?s still time to join the Spring team and larger Java ecosystem for SpringOne, being held 6-8 December, 2022, in sunny San Francisco, CA, 94105! Join us! (Psst.: If you …

Read more

A Bootiful Podcast: Google mad scientist Josh Suereth on Observability with OpenTelemetry, building better build tools, and so much more

Josh Long October 13, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) looks at the latest and greatest in Spring Boot 3 AOT, then talks to Google?s Josh Suereth (@jsuereth) about observability with OpenTelemetry, building better build tools, and so much more.

Want to learn more about Spring Boot and the wider ecosystem? SpringOne 2022 is almost here! If you want a chance to learn from the source, I hope you?ll join us 6-8 December 2022, right here in my hometown of San Francisco, my favorite west coast city in the USA. (Psst.: If you register now, there?s a $200 discount from the pass price with this code S1VM22_Advocate_200.)

Read more

This Week in Spring - October 11th, 2022

Josh Long October 11, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! I write this installment as I pack and prepare for my trip to Antwerp, Belgium, for the always-amazing Devoxx show in Antwerp, Belgium. I?ve so missed this show over the pandemic and am so looking forward to returning. I hope to catch any and all of you there, too! I?ll be copresenting with my pal James Ward about some of the new and novel in Spring Boot 3 and Kotlin. It?s going to be awesome - join us and we?ll have some fun together!

Now, we?ve got a ton to cover so let?s dive right into it!

Read more

Spring Tips: Spring Boot & Apache Kafka

Josh Long October 10, 2022

Hi, Spring fans! In this installment of Spring Tips, I look at the venerable Apache Kafka broker and its integrations at various level of abstraction in the Spring Boot ecosystem.

Want to learn more about event driven architectures, AOT and GraalVM, Apache Kafka, and Spring Boot? SpringOne 2022 is almost here! If you want a chance to learn from the source, then I hope you?ll join us 6-8 December 2022, right here in my hometown of San Francisco, my favorite west coast city in the USA. (Psst.: If you register now, there?s a $200 discount from the pass price with this code S1VM22_Advocate_200.)

Read more

Deploying .NET apps to TAP on AWS

Watch Cal and Layla deploy a .NET application to TAP on AWS

Layla Porter & Cal Kadourah October 7, 2022

In this video, join Layla Porter and Cal Kadourah, an Advisory Solution Engineer at VMware, as they go through the new AWS quickstart for deploying TAP workloads on AWS.

Full instructions can be found on this GitHub repository and further details about TAP on AWS can be found on this page.

If you have any questions or ideas please feel free to reach out to Layla on one of the following platforms.

Email: laylap@vmware.com
Twitter: @LaylaCodesIt
GitHub: layla-p
Twitch: LaylaCodesIt
YouTube: LaylaCodesIt

Read more

A Bootiful Podcast: Spring and Java community legend Marten Deinum

Josh Long October 6, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to longtime Spring community member and legend Marten Deinum (@mdeinum) about scuba diving, software, Spring, community, and more.

Also: I fixed the odd silence in the middle of the last few episodes! thanks for suffering through it with me. I have no idea what went wrong but I know now how to fix it

Want to meet more amazing people in our ecosystem, like Marten? SpringOne 2022 is almost here! I feel like it?s that anxious, exciting time before, sort of important holiday where you get given gifts! And with it, Spring Boot 3 and Spring Framework 6. We?re going to be announcing everything right here on the Spring blog, of course, but if you want a chance to learn from the source, then I hope you?ll join us 6-8 December 2022, right here in my hometown of San Francisco, my favorite west coast city in the USA, and my hometown. (Psst.: If you register now, there?s a $200 discount from the pass price with this code S1VM22_Advocate_200.)

Read more

This Week in Spring - October 4th, 2022

Josh Long October 4, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! It?s October 4th, 2022, and I?m in Austin, TX, for the new version of show formerly known as the Kafka Summit, here to talk to folks about the amazing opportunities for Spring Boot and Apache Kafka. On the 12th, I?ll be in Antwerp, Belgium, for the amazing Devoxx show. On October 17-20th, I?ll be in Las Vegas, for the new version of JavaOne. And, well, there?s more but I can?t say exactly. Stay tuned!

And as for now, well, I?m excited to be here! We?ve got a ton of cool stuff to cover this week, so let?s dive right into it!

Read more

Opinion: Use a Multi-module Project Instead of 12-Factor Codebase

There are two choices for a product development repository: a multiple 12-factor codebase or a multi-module project in a single repository (monorepo). For me, the only issue with 12-factor applications lies with the first factor of the codebase.

Brad Davidson October 3, 2022

There are two choices for a product development repository: a multiple 12-factor codebase or a multi-module project in a single repository (monorepo).

Problems with 12-factor codebase

For me, the only issue with 12-factor applications lies with the first factor of the codebase. If you follow this first factor, then a web-based product will have many 12-factor codebases; namely, a codebase for a gateway, each service, each shared component, a user interface, and a product/project level repository for system integration, documentation, and potentially continuous integration/continuous delivery (CI/CD) configuration.

The problem with this is that:

  • There is no indication of the related codebases, consequently, the order of checking changes across multiple 12-factor codebases can result in broken builds.
  • GitFlow, a branching model for Git, can be more complex since each 12-factor codebase may or may not have the branch. Therefore, making sure all branches are applied to the main branch of each 12-factor codebase could be challenging.
  • There’s a question as to when (not if) the project/product level repository will be forgotten or ignored.

Multi-module project repository a.k.a. monorepo

Using an Apache Maven or Gradle multi-module project structure enables a web-based product to have a single repository with a gateway, services, shared components/jars, a user interface, system …

Read more

A Bootiful Podcast: thought leader Chris Richardson (and no, Im not using that title ironically!)

Josh Long September 29, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to his friend Chris Richardson (@crichardson), who helped articulate and advance cloud computing, reactive programming, microservices, domain-driven design, event sourcing, and so much more years before the zeitgeist. Also, we used to work together!

Want to meet more amazing people in our ecosystem, like Chris? SpringOne 2022 is almost here! I feel like it?s that anxious, exciting time before, sort of important holiday where you get given gifts! And with it, Spring Boot 3 and Spring Framework 6. We?re going to be announcing everything right here on the Spring blog, of course, but if you want a chance to learn from the source, then I hope you?ll join us 6-8 December 2022, right here in my hometown of San Francisco, my favorite west coast city in the USA, and my hometown. (Psst.: If you register now, there?s a $200 discount from the pass price with this code S1VM22_Advocate_200.)

Read more

This Week in Spring - September 27th, 2022

Josh Long September 27, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring!

It?s the last week of September, already! The year?s more done than not. The days are receding into darkness earlier. And the Pumpkin Spice Lattes are upon us. The darker and colder days are kind of a bummer, but I?m stil excited and overjoyed this time of year. You know why?

SpringOne 2022 is almost here! I feel like it?s that anxious, exciting time before sort of important holiday where you get given gifts! And with it, Spring Boot 3 and Spring Framework 6. We?re going to be announcing everything right here on the Spring blog, of course, but if you want a chance to learn from the source, then I hope you?ll join us 6-8 December, 2022, right here in my hometown of San Francisco, my favorite west coast city in the USA, and my hometown. )Psst.: If you register now, there?s a $200 discount from the pass price with this code S1VM22_Advocate_200.)

Anyway, my friends, we?ve got a ton to cover, so let?s dive right into it.

Read more

Delete Passwords: Passwordless Connections for Spring Boot Apps to Azure Services

Josh Long September 27, 2022

Using username/password credentials to access one application from another presents a huge security risk for many reasons. Today, we are announcing the preview of passwordless connections for Java applications to Azure database and eventing services, letting you finally shift away from using passwords.

Security Challenges with Passwords

Passwords should be used with caution, and developers must never place passwords in an unsecure location. Many Java applications connect to backend data, cache, messaging, and eventing services using usernames and passwords, or other sensitive credentials such as access tokens or connection strings. If exposed, the passwords could be used to gain unauthorized access to sensitive information such as a sales catalog that you built for an upcoming campaign, or simply all customer data that must be private.

Embedding passwords in an application itself presents a huge security risk for many reasons, including discovery through a code repository (see Figure 1 below). Many developers externalize such passwords using environment variables so that applications can load them from different environments. However, this only shifts the risk from the code itself to an execution environment. Anyone who gains access to the environment can steal passwords, which in turn, increases your data exfiltration risk.

Figure 1 ? shows Java code with an …

Read more

My SpringOne 2022

Josh Long September 23, 2022

It has taken me an embarrassingly long time to appreciate and understand that the devil is in the details regarding software development. Writing happy-path business logic isn?t the hard part! It?s the failure cases, observability, resilience, and process. It?s security and other so-called non-functional requirements. It?s architecting for agility. It?s production. Spring is unique because it sits at the crossroads of many exciting application development discussions.

Spring?s community contains multitudes and is one of the key defining features. This diversity of discussion means that any conference that endeavors to cover the full sweep of ideas has its work cut out. I don?t know of any other show - and I?ve spoken at many thousands of shows and events in my life! - that completely covers the different dimensions of application development like SpringOne does. I feel like SpringOne is the closest, anyway, and I want to talk about what I?m looking forward to about this year?s SpringOne 2022 event.

It?s important to preface with the following list of the things I want to see at SpringOne: my personal, particular preferences around concepts I?m going to explore this SpringOne, happening in San Francisco 6-8 December 2022. Have you registered?

Case Studies

Has it been a while since you read a juicy whitepaper describing some organization?s architecture for tomorrow? Don?t …

Read more

A Bootiful Podcast: Couchbase and Cloud legend Laurent Doguin

Josh Long September 22, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to his friend, fellow Java Champion, and director of developer relations and strategy at Couchbase, Laurent Doguin (@ldoguin)

SpringOne 2022 is almost here! This is our first in-person event since the pandemic and it?s when we release Spring Framework 6 and Spring Boot 3, the next generation of Spring and Spring Boot respectively. It?s running 6-8 December in my sunny San Francisco, CA! Register now at SpringOne.io and use the code S1VM22_Advocate_200 to get $200 off the current registration price.

Read more

This Week in Spring - September 20th, 2022

Josh Long September 20, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring wherein I endeavor as best as I can to capture the latest-and-greatest in the wide, wacky, and wonderful world of Springdom! Naturally, I fail miserably basically every week. There?s no way I could hope to capture everything of note. But I persist?

Are you coming to SpringOne 2022? This is our first in-person event since the pandemic and it?s when we release Spring Framework 6 and Spring Boot 3, the next generation of Spring and Spring Boot respectively. It?s running 6-8 December here in my hometown of sunny San Francisco, CA! Register now at SpringOne.io and use the code S1VM22_Advocate_200 to get $200 off the current registration price.

So, without further ado, yet another wonderful week?s roundup!

Read more

A Bootiful Podcast: big data legend, former Pivot, and friend to the Spring community, Tim Spann

Josh Long September 15, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to big data legend, former Pivot, and friend to the Spring community, Tim Spann (@PaaSDev), about big data, StreamNative, and Apache Pulsar, and Spring for Apache Pulsar. Get your notebooks ready for this one, class!

Read more

This Week in Spring - September 13th, 2022

Josh Long September 13, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! We?ve got a lot of good stuff to get to so let?s dive right into it!

Read more

A Bootiful Podcast: Hashicorps Rosemary Wang on securing the intersection of apps and ops with Hashicorp Vault

Josh Long September 8, 2022

Hi, Spring fans! In this episode Josh Long (@starbuxman) talks to Hashicorp Developer Advocate Rosemary Wang (@joatmon08) about a few Hashicorp technologies and their integrations with Spring Boot.

Read more

This Week in Spring - September 5th, 2022

Josh Long September 6, 2022

Hi, Spring fans! How are you? It?s a fantastic Tuesday, the 5th of September, 2022, and I couldn?t be happier. It?s also Labor Day weekend here in the US. It marks the unofficial end of summer, which is a bit sad. But, on the upside, it?s a four-day weekend for me! I?m technically off today. So, you?ll forgive me, but I won?t spend too much time here. Let?s dive right into this week?s roundup!

Read more

A Bootiful Podcast: Dr. Kris De Volder on Spring Tools, VS Code, and so much more

Josh Long September 1, 2022

Hi, Spring fans! In this episode Josh Long (@starbuxman) talks to Dr. Kris De Volder, a longtime member of the Spring Tools team, about all the cool stuff he?s worked on and is going to work on. And then we get knee deep into a discussion around building IDE integrations.

Read more

Price Reduction - Azure Spring Apps does more, costs less!

Josh Long August 31, 2022

We believe in providing the most innovative cloud offerings at incredibly competitive prices. As we operate Azure Spring Apps, we continue to build efficiencies and economies of scale. We are passing those efficiencies to you.

Many customers have asked us to lower the size of the base unit to make it easier to get started and accommodate smaller projects.

Announcing Price and Base Unit Reduction

Effective September 1st, we are reducing the base unit of Azure Spring Apps Standard and Enterprise to 6 vCPUs and 12 GB of Memory. And reducing the overage prices for vCPU and Memory.

New Monthly FREE Grants

Furthermore, to help you get started, effective mid-September, we are offering monthly FREE grants ? 50 vCPU hours and 100 Memory GB hours.

Let?s look at a few examples:

Note: If you are running 10 app instances with 1 vCPU and 2GB in Azure Spring Apps Standard, the service will consume 50 vCPU hours (10 app instances x 1 vCPU x 5 hours) and 100 Memory GB hours (10 app instances x 2 GB x 5 hours) in 5 hours. After that, the base and overage prices will be charged. Please note that the base unit in Standard tier allocates 6 vCPUs and 12 GB of Memory and it runs for 8 hours and 20 minutes using the monthly free grant.

App instances in Standard No. of FREE hours per month BEFORE the base and or overage prices are charged
0 to 6 …

Read more

This Week in Spring - August 30th, 2022

Josh Long August 30, 2022

Hi, Spring fans! How are you? How?re you doin? this fine tuesday morning? I?m doing well, of course, because this week VMware?s tentpole show - VMware Explore - is happening not even a mile from my home, here in San Francisco! And this is just the first one - there?ll be another show, my favorite show, in December: SpringOne 2022! I sure hope you?ve registered and that we?ll see you there!

Indeed, I?ve got a lunch to get to, so let?s get this this week?s wrapup done a little more quickly: without further ado?.

Read more

Microsoft is committed to the success of Java developers

Josh Long August 30, 2022

Hi, Spring fans! This is a guest post from our friend Julia Liuson, President, Developer Division, Microsoft

As a company, we are committed to making Java developers as efficient and productive as possible. This commitment means empowering you to use any tool, framework, and application server on any operating system. Wherever you are with Java, Microsoft supports your workload with an abundance of choices and with a wide range of developer tools and services.

Code, Deploy, and Scale Java Your Way

Today, more and more Java developers are looking at how they can bring their existing Java applications to the cloud?or how to build new cloud-native applications. We have been working to make it easier for you to bring your Java applications to the cloud using the tools and frameworks you love. You can then deploy and scale easily using the same application servers and open-source technologies you already know and trust.

Over the past few years, we?ve forged several strategic partnerships with major vendors in the Java ecosystem. These partnerships empower you to code and deploy without worrying about infrastructure. Azure Spring Apps (jointly developed with Pivotal / VMWare) offers native integrations with third-party application performance monitoring (APM) tools from New Relic, App Dynamics, Dynatrace, and Elastic. Our other jointly developed offerings include Red Hat …

Read more

A Bootiful Podcast: Fellow Java Champion and TimescaleDB developer advocate Christoph Engelbert

Josh Long August 25, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to fellow Java Champion and TimescaleDB developer advocate Christoph Engelbert (@noctarius2k) about PostgreSQL, Java, time series databases, observability, and so much more.

Read more

Write More Maintainable, Testable Code with Dependency Injection

Jakub Pilimon & Layla Porter August 23, 2022

Nowadays, web developers seem to be mainly focused on the cloud, microservices, containers, and scale. In reality, some just work with an old legacy system, struggling with it from one day to the next. Defining “legacy” is probably a post in itself, but for the sake of this post consider this one assumption:

The deployment strategy does not constitute a legacy system. It’s all about the structure of the codebase.

The structure of a system can be improved with the use of established software design patterns. This post aims to give an overview of two such patterns, Dependency Injection (DI) and Inversion of Control (IoC). An understanding of object-oriented programming (OOP) is beneficial for this post, along with some knowledge of Java, although not essential.

A lack of extensibility and testability

I have created a small demo application (waffle app) that creates waffle orders with this program flow:

  • A request to create a waffle gets handled by the WaffleCreator’s prepare method
  • WaffleCreator creates the MacronutrientsProvider
  • WaffleCreator uses the MacronutrientsProvider

The code for this demo is as follows:

class WaffleCreator {

    Waffle prepare(String name, Waffle.Type type) {
        if (type == Waffle.Type.LOW_SUGAR) {
            MacronutrientsProvider ingredientsProvider
                    = new MacronutrientsProvider("http://nosugar.com"); …

Read more

Using Tanzu Build Service for Java apps in the public sector.

An account of how the Tanzu Build Service was implement at Tanzu SLED client sites

Eric Standley August 20, 2022

Tanzu Build Service

What Is Tanzu Build Service?

Tanzu Build Service, TBS for short, is a tool that will take a code source whether it be a local file system, a blob store (eg S3) or a git repository and build that code into a runnable OCI image. Behind the scenes it uses Cloud Native Buildpacks to build a runnable artifact (jar, exe, etc) of your code and a custom resources called builders to define the image that will host your code. To manage all this it also uses the open source tool Kpack. If you want a more in depth look please check out the official page.

Why in the “Public Sector”

Just for some quick background here, I’m currently a Software Architect in VMware’s public sector division, I came here from having a long background working with satellites and their associated ground systems that control them. While there are quite a few interesting commercial satellite starts up that have popped up over the past few years, most of this work is still with government agencies. Thus most of the time when I’m working on a system it can’t connect to the internet which makes working with todays tools quite challenging and in rare cases impossible. I’ve had to setup TBS at a few places with these hurtles in place and want to post about what we found out and how we solved the challenges we had. Note that this isn’t a how to use TBS in all cases as …

Read more

A Bootiful Podcast: Flowable founder Joram Barrez on a Bootiful Podcast on workflow, business process management, and more

Josh Long August 18, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Flowable founder Joram Barrez (@jbarrez) about workflow, business process management (BPM), decision management, rules, and so much more

Read more

How Might We Better Use Loaded Terms Like "Personas" and "Jobs to be Done"?

It’s true that these terms are well defined and widely used, the problem is that they each have many different formal definitions associated with them and many more informal definitions too.

Vitor Kneipp August 17, 2022

The article below came to life in early 2019, when few people talked about marrying jobs to personas. More importantly, the example product is quite technical, an application platform, which is seldom the example of choice of most write-ups on the internet. For this reason, it is a rare jewel, a jewel that has aged well.

The most precious jewelry have stories behind them. This story starts in the old Pivotal blog, where the article used to live, while Pivotal still existed as an independent company. There it inspired a generation of product thinkers at Pivotal, including myself. Until one day most (but not all) blog posts moved to the new Tanzu blog, on the occasion of the VMware acquisition. Hundreds of articles moved to their new home. Some, like this one, slipped through our fingers, and stayed buried in the bowels of the former company’s old archives, as an unpublished draft. Sooner or later, a scavenger would find this jewel and bring it back to light. This time it was me. I hope you enjoy your reading.

alt_text

It’s true that these terms are well defined and widely used, the problem is that they each have many different formal definitions associated with them and many more informal definitions too. This leads us to inefficiencies in the ways we operate as we do not have a shared understanding of what is meant. Terms should flex to their use, and the onus is on the user of a …

Read more

This Week in Spring - August 16th, 2022

Josh Long August 16, 2022

Hi, Spring fans! Welcome to another wonder-filled installment of This Week in Spring! It?s been a week! Sometimes I can scarcely believe it myself. And can you believe it?s August 16th already?? My daughter?s starting school this week! We?re in the northern hemisphere, and Summer break is already over and done with for her. There?s still another month and some change of summer, officially, though. So, I hope you all are doing whatever you can to maximize your enjoyment of it before the darker and colder months arrive.

Twitter helps me pass the time. I?ve been working on some code and wanted to use Twitter?s OAuth 2 and PKCE support in the application but couldn?t quite make it work. So I pinged my pal (everybody?s pal, really!) and Spring Security lead Rob Winch (@rob_winch) for some clues, and he did me one better: he put together a sample that demonstrates it all in action! Thanks, Rob! I love Spring Security and a huge reason is because of the amazing and helpful and indulgent team behind it. And I love Twitter (most of the time, anyway).

It?s been a busy week on Twitter for me! On it, I asked what people are using for their observability stacks on Kubernetes, figured out that for my 25+ years in writing software, I don?t know anything, and so much more! And here, you silly reader you, you?ve probably been happy being all productive in your off-Twitter life, haven?t …

Read more

Consuming VMware Tanzu Data Service Postgres for Kubernetes Using Tanzu Application Platform Services Toolkit

In this blog, we'll demonstrate how VMware Tanzu Data Service Postgres for Kubernetes installed in Cluster 1 can be consumed by VMware Tanzu Application Platform Services Toolkit via secret, as well as facilitate workload deployment in Cluster 2.

Vasanth Desikan August 16, 2022

In this blog, we’ll demonstrate how VMware Tanzu Data Service Postgres for Kubernetes installed in Cluster 1 can be consumed by VMware Tanzu Application Platform Services Toolkit via secret, as well as facilitate workload deployment in Cluster 2.

Prerequisites

  • Two VMware Tanzu Kubernetes Grid 1.5.4 Workload Clusters on vSphere (Cluster 1 will have Tanzu Data Service Postgres for Kubernetes v1.8 installed. Cluster 2 will have Tanzu Application Platform’s full profile installed.)
  • Access to VMware Tanzu Network
  • Docker running on a local machine/client
  • Tanzu command line interface
  • kubectl
  • Helm v3
  • Tanzu Application Platform 1.2.0

Installing Tanzu Data Service

Install Postgres operator on Cluster 1

  1. Create a namespace cert-manager and install cert-manager.
~$ kubectl create ns cert-manager
~$ tanzu package install cert-manager -p cert-manager.tanzu.vmware.com.1.5.3+vmware.2-tkg.1  -n cert-manager
  1. Log in to network.tanzu.vmware.com via Helm.
~$ export HELM_EXPERIMENTAL_OCI=1
~$ helm registry login registry.tanzu.vmware.com
  1. Pull the Helm chart and images to a local docker registry and export the artifacts into a local test management protocol directory.
~$ helm chart pull registry.tanzu.vmware.com/tanzu-sql-postgres/postgres-operator-chart:v1.8.0
~$ mkdir tmp
~$ helm chart export registry.tanzu.vmware.com/tanzu-sql-postgres/postgres-operator-chart:v1.8.0  --destination=tmp …

Read more

A Bootiful Podcast: the good Dr. Venkat Subramaniam

Josh Long August 11, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to the good Dr. Venkat Subramaniam (@venkat_s) about the art of writing software, his latest projects, and more

Read more

A Bootiful Podcast: Observability guru Jonatan Ivanov on the future of observability in Spring Boot

Josh Long August 4, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Spring observability guru Jonatan Ivanov (@jonatan_ivanov)

Read more

Building a Topic Exchange with RabbitMQ and .NET 6

RabbitMQ is a message broker accepts messages from a producer (the message sender) and holds it in a queue so that a consumer (the message receiver) can retrieve it. In this blog, I'll show you how to build a topic exchange on RabbitMQ with .NET 6

Layla Porter August 3, 2022

What Is RabbitMQ?

alt_text

At a high level, RabbitMQ is an open source message broker. A message broker accepts messages from a producer (the message sender) and holds it in a queue so that a consumer (the message receiver) can retrieve it. This allows for multiple producers and consumers to share the same queue without having to directly pass messages between each other. What RabbitMQ excels at is doing this at scale whilst staying lightweight and easy to deploy.

To get started with a basic RabbitMQ implementation, checkout this guide.

Why use a message broker?

The first question you may have is “why do I want to add in additional complexity?”

If you were not using a message broker, you would most likely be using an HTTP or socket-based form of communication. These methods can be difficult to scale and are not always robust. HTTP communication can also tightly couple two systems together - increasing inter-dependency, which is undesirable.

The addition of a message broker improves the fault tolerance and resiliency of the systems in which they are employed.

They are easy to scale as their publish/subscribe pattern means the addition of many more services can be easily supported - without having to modify existing systems.

What is a Topic Exchange?

RabbitMQ has four types of exchanges (or message routers) available to route the message in different ways. You will focus …

Read more

This Week in Spring - August 1st, 2022

Josh Long August 2, 2022

Aloha, Spring fans! Welcome to another installment of This Week in Spring!

I?m still on vacation on the beautiful island of Maui, Hawaii, but I wanted to say hello (?aloha!?) and share this week?s latest roundup of all that?s good and glorious in the wide and wonderful world of Springdom.

Funny thing, today - the 2nd of August, 2022 - is also my 12-year anniversary on the Spring team. It continues to be a helluva ride, and I so look forward to all that lies ahead. Thank you, Spring team, for everything. Also, sort of coincidentally, I just got a nice promotion. (Thanks, Spring team and VMware). I?m also just about to hit 60,000 followers on Twitter. It?s been a weird, wonderful week, and not just because of all that, but because we?ve got a ton of great stuff to dive into this week (besides the ocean, which I?ll return to promptly after finishing this roundup)!

Read more

A Bootiful Podcast: RabbitMQ rabbit-herder Dan Carwin

Josh Long July 28, 2022

Hi, Spring fans! In this installment Josh Long (@starbuxman) talks to a very busy rabbit-herder on the RabbitMQ team, Dan Carwin (@dcarwin)

Read more

This Week in Spring - July 26th, 2022

Josh Long July 26, 2022

Aloha, Spring fans! I?m on vacation, reporting to you from the paradise-like island of Maui, Hawaii, and hoping that you?re having a wonderful day! My family and I love Hawaii. It?s brimming with beauty and serenity, and while the island of Maui, in the state of Hawaii, is very small, the islands are humbling. They make you feel so very small. It?s surreal to sit there on the beach as the sun creeps down beyond the horizon and to realize there?s nothing but pitch black darkness and water for as far as you can see, starting just a few meters away. It?s endless. It has no end. Like the bugs in code. Endless. And humbling.

I?ve spent so much time on the beach with my partner and our daughter that it actually feels kind of weird just to sit here at the keyboard and write out this blog! But I?m happy to do it. It?s gratifying to learn new things. And so, with that, let?s dive into this week?s installment:

Read more

A Bootiful Podcast: Spring Cloud and Spring Cloud Kubernetes contributor Ryan Baxter

Josh Long July 21, 2022

Hi, Spring fans! In this episode, Josh Long (@starbuxman) talks to a person who knows more than most about the awesome implications of both the words ?Spring? and ?Cloud,? Spring Cloud Kubernetes lead Ryan Baxter (@ryanjbaxter).

Read more

Spring Tips: Kubernetes Native Java (Redux, 2022)

Josh Long July 20, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) looks at some of the amazing opportunities for building Spring Boot applications intended for production in Kubernetes in mid 2022.

The code, as usual, is available on the spring-tips Github organization

Read more

Spring Tips: Kubernetes Native Java (Redux, 2022)

Josh Long July 17, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) looks at some of the amazing opportunities for building Spring Boot applications intended for production in Kubernetes in mid 2022.

The code, as usual, is available on the spring-tips Github organization

Read more

A Bootiful Podcast: Nate Schutta: The Thinking Persons Architect, My Friend, and Teammate

Josh Long July 14, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to his friend, teammate, and architect extraordinaire, Nate Schutta (@ntschutta)

Read more

This Week in Spring - July 12th, 2022

Josh Long July 12, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! How are you? This week I?m writing you from sunny Seattle, Washington, where we?re having our next installment of the SpringOne Tour series. It?s been a ton of fun seeing all these fun and friendly faces again and getting to see people, many of whom I haven?t seen since before the pandemic! I?ve also had a lot of fun seeing some friends from some of the big cloud companies here, Microsoft and AWS. It?s always interesting to learn how people are using the latest and greatest from Spring to build amazing systems and software targeting these cloud platforms.

We?ve got a lot to cover this week so let?s dive right into it!

Read more

A Bootiful Podcast: Kubernetes contributor and fellow Tanzu Developer Advocate Leigh Capili

Josh Long July 7, 2022

Hi, Spring fans! In this installment Josh Long (@starbuxman) talks to fellow teammate and Kubernetes ecosystem legend Leigh Capili (@capileigh) about Gitops, Kubernetes, Puppet/Chef, continuous delivery, how zoom scales if you deploy on-prem, being a developer advocate, Flux, and so much more.

Read more

This Week in Spring - July 5th, 2022

Josh Long July 5, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! This week?s all sorts of weird for me. It?s Tuesday! But here in the US we just celebrated the 4th of July, and I, like many Americans, took a long weekend. Took some time with the family to do a little road trip up north to visit Mt. Shasta, Crater Lake, Lassen National Park, etc. It was a ton of fun, and a lot of driving! Anyway, it all kinda blurs together and felt like just one weekend, and today feels like Monday. I only just realized it was Tuesday! And you know what that means? It?s time for our weekly dive into the wild and wonderful world of Springdom!

Read more

A Bootiful Podcast: Spring Developer Advocate Dan Vega

Josh Long June 30, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to fellow Spring Developer Advocate Dan Vega (@therealdanvega)

Read more

Today is the last day to submit to the SpringOne 2022 Call For Papers!

Josh Long June 28, 2022

Hi, Spring fans! This year, SpringOne is back in person, and being held in my hometown of San Francisco, California, December 6th-8th. (Have you registered?) and today (June 28th, 2022) is the last day to submit to the Call For Papers! If you have a good idea or story you want to share, submit today!

Either way, I hope to see you in December in San Francisco, a city so famous for its foggy nightscapes that I think it?s fair to say we are the original cloud natives!

Read more

This Week in Spring - June 28th, 2022

Josh Long June 28, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! I?m writing this from the Big Apple, New York City! I?m here for the SpringOne Tour 2022 NYC event. This is my first time back in New York City since before the pandemic and it has been so much fun. I?ve been catching up with people I?ve not seen in years. I even accidentally bumped into people I had no idea was going to also be in town at the same time as I was. New York City is like a magnet for fun, and for fun people. Anyway, we?ve got a lot of stuff to get to this roundup, so let?s dive right into it.

Also: if you?re just reading this, today - the 28th of June - is the last day to submit to SpringOne 2022, being held in my hometown of San Francisco, California, in December of this year!

Read more

Spring Tips: Learn Spring for GraphQL (the last two episodes: parts 7 and 8)

Josh Long June 24, 2022

Hi, Spring fans! In thi^^^ these installments, we continue our series introducing the Spring for GraphQL project. This series features Spring for GraphQL lead Rossen Stoyanchev (@rstoya05) - whose work you may know from basically everything in the wide and wonderful world of Springdom having to do with the web (HTTP, RSocket, WebSockets, GraphQL, JSF, MVC, etc) - and GraphQL Java engine founder and lead Andi Marek (@andimarek) and of course yours truly, Spring Developer Advocate Josh Long (@starbuxman). It provides an in-depth look at all things Spring for GraphQL.

This week I?m publishing two new installments.

The first episode this week is part seven of eight, focusing on how to secure a Spring for GraphQL application with Spring Security.

The last episode this week is part eight of eight, the final episode of the series introducing the new and novel Spring for GraphQL project, looks at how to integrate Spring for GraphQL and Spring Data.

This continues the series we started last week, with episodes one and two, which I recap here:

In this first installment, we look at the basics of using the GraphQL Java engine that underpins Spring for GraphQL.

In this second installment, we look at using the Spring for GraphQL component model by writing queries.

Episode three of a series, looks at batching requests with Spring for GraphQL?s @BatchMapping support. This …

Read more

A Bootiful Podcast: JVM and .NET legend Ted Neward on... just about everything

Josh Long June 23, 2022

Hi, Spring fans! In this installment, I (@starbuxman) talk to my old friend, world-famous polyglot and code curmudgeon, software philosopher, industry veteran, and legend of ecosystems aplenty, Ted Neward (@tedneward)

Read more

Announcing General Availability of Tanzu Toolkit for Visual Studio

We're pleased to announce that the Tanzu Toolkit for Visual Studio is now generally available. Tanzu Toolkit for Visual Studio is an extension for Visual Studio 2019 and 2022 that enables users of Tanzu Application Service or other Cloud Foundry distributions to manage applications directly from within Visual Studio IDE.

Tim Hess June 22, 2022

We’re pleased to announce that the Tanzu Toolkit for Visual Studio is now generally available. Tanzu Toolkit for Visual Studio is an extension for Visual Studio 2019 and 2022 that enables users of Tanzu Application Service (“TAS”) or other Cloud Foundry distributions to manage applications directly from within Visual Studio IDE.

Why release this extension?

Tanzu Application Service continues to be an excellent place to run cloud native applications, particularly those that are written in .NET.

While some features provided by this extension are already available in Tanzu Apps Manager, bringing them into Visual Studio reduces the impact of context switching and makes it easier to navigate directly to the correct application instance. Other features of the extension also simplify otherwise complicated tasks.

What can it do?

Cloud native application developers need to be able to accomplish a few things in order to be productive:

  • Build an application within some guidelines (that are implemented in a way that makes life easier, like marketplace offerings and service bindings)
  • Perform some basic administrative tasks within the context of that application (at least in pre-production environments)
  • Step through the code when something goes wrong (ideally regardless of where that code is running)

This extension provides those capabilities within an IDE used by many …

Read more

This Week in Spring - June 21st, 2022

Josh Long June 21, 2022

Hi, Spring fans! Welcome to another installment of This Week in Spring! How are you? It?s been a hot minute since we last chatted. I was in Germany this time last week. Now, I?m back in beautiful San Francisco. Today the weather will climb to a monumental 84 F! That?s very unusual, for any time of the year, here in San Francisco. Most places here in San Francisco don?t have air conditioning. Some have heating. I bought a brand new condo in 2014 and it didn?t have air conditioning. You just open the window. I am privileged enough that I have air conditioning today, of course. I mention all this to say that it?s hot here! I worry for the elderly! When it gets this hot, the YMCA and other organizations typically invite elderly people to come in and get some cool air and water. It?s dangerous. Some days it gets even hotter. Very rare, but it does happen. I hope you?re all doing well. Take care of yourselves and each other, my friends.

And, speaking of being hot, let?s look at this week?s roundup of the latest-and-greatest that?s hot off the press!

Read more

Bootiful Podcast: Spring Framework contributor S??bastien Deleuze on GraalVM, AOT, project Leyden, and WebAssembly

Josh Long June 16, 2022

Hi, Spring fans! In this installment, Josh Long (@starbuxman) talks to Spring Framework contributor S?bastien Deleuze (@sdeleuze) on GraalVM, AOT, project Leyden, and WebAssembly.

Read more

Spring Tips: Learn Spring for GraphQL (parts 5 and 6 of an ongoing series)

Josh Long June 14, 2022

Hi, Spring fans! In thi^^^ these installments, we continue our series introducing the Spring for GraphQL project. This series features Spring for GraphQL lead Rossen Stoyanchev (@rstoya05) - whose work you may know from basically everything in the wide and wonderful world of Springdom having to do with the web (HTTP, RSocket, WebSockets, GraphQL, JSF, MVC, etc) - and GraphQL Java engine founder and lead Andi Marek (@andimarek) and of course yours truly, Spring Developer Advocate Josh Long (@starbuxman). It provides an in-depth look at all things Spring for GraphQL.

This week I?m publishing two new installments.

The first of this week?s installments, part five of the series, looks at using GraphQL subscriptions to stream data in a way that is agnostic of the supported transport protocols: SSE, WebSockets, and RSocket. In this episode, we look at the RSocket support in particular.

The second of this week?s installments, part six of the series, looks at using the Spring for GraphQL clients to talk to HTTP, WebSocket, and RSocket-powered GraphQL services.

This continues the series we started last week, with episodes one and two, which I recap here:

In this first installment, we look at the basics of using the GraphQL Java engine that underpins Spring for GraphQL.

In this second installment, we look at using the Spring for GraphQL component model by writing queries. …

Read more

Top-Level Statements in .NET 6

The Startup class was the place to register all of the application’s dependencies, set up the middleware, and of course, configure the configuration. Yet, in .NET 6, all of that changed with the launch of top-level statements.

Layla Porter May 25, 2022

When the community first saw .NET 6 there was a little bit of uproar, myself included, about how the way we structured web applications had changed.

In earlier versions of .NET Core, we had grown familiar with the symbiotic relationship between the Startup and Program classes. We even engineered ways to add a Startup class to Azure Functions and console applications.

Cover image of a stack of four rocks on a wooden table

The Startup class was the place to register all of the application’s dependencies, set up the middleware, and of course, configure the configuration.

Yet, in .NET 6, all of that changed with the launch of top-level statements. By making the program’s entry point a static method, the new Program class could relinquish its hold on ceremony including all of the set up we used to do in the Startup class—so no more Startup class!

The Program class now looks like this:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

I haven’t omitted any code—this …

Read more

Instrumenting TKG with Tanzu Observability

Tanzu Observability enables you to monitor your Kubernetes infrastructure metrics from Wavefront dashboards, as well as create alerts from those dashboards

Scott Rogers May 24, 2022

Tanzu Observability enables you to monitor your Kubernetes infrastructure metrics (e.g., containers, pods, etc.) from Wavefront dashboards, as well as create alerts from those dashboards. You can also automatically collect metrics from applications and workloads using built-in plug-ins such as Prometheus, Telegraf, etc.

Tanzu Observability recognizes Tanzu Kubernetes Grid (TKG) clusters just like any other Kubernetes cluster. For more information, read this documentation.

Within the product, installing Kubernetes integration is as simple as deploying a Helm chart (seen below). The Helm is customized for different types of Kubernetes.

New Kubernetes Cluster Integration for Tanzu Observability

If you do not have a Tanzu Observability license you can start a free trial here

Once the integration is flowing metrics, usually within just a few minutes, you can use the dashboards provided with the integration to start observing your clusters.

Tanzu Observability has something for everyone. If you’re a Spring developer, instrumenting your application is a breeze. If you’re a Kubernetes operator, Tanzu Observability has you covered as well!

It’s that simple to instrument your TKG clusters with VMware Tanzu Observability by Wavefront. Happy observing!

Read more

Demystifying VMware Tanzu Application Platform’s Out-of-the-Box Supply Chain

In this post, we’ll take a closer look at the OOTB Testing and Scanning Supply Chain. The Out-of-the-Box Testing and Scanning Supply Chain contains all of the same elements as the Out-of-the-Box Testing Supply Chain, but it also includes integrations with the secure scanning components of Tanzu Application Platform.

Gowtham Shankar May 18, 2022

Introduction

VMware Tanzu Application Platform is a modular, application-aware platform that provides a rich set of developer tooling and a prepaved path to production to build and deploy software quickly in a consistent, scalable, and secure way.

Tanzu Application Platform automates the process of taking the application code and deploying it to production with the help of supply chain choreography.

Tanzu Application Platform installation comes with three versions of the Out-of-the-Box (OOTB) Supply Chain to promote code to production:

  • OOTB Basic (Default)
  • OOTB Testing
  • OOTB Testing and Scanning

In this post, we’ll take a closer look at the OOTB Testing and Scanning Supply Chain. The Out-of-the-Box Testing and Scanning Supply Chain contains all of the same elements as the Out-of-the-Box Testing Supply Chain, but it also includes integrations with the secure scanning components of Tanzu Application Platform.

A few different custom resource definitions (CRDs) make up the supply chain choreography. Please note that the below list only covers the objects that are part of the OOTB Supply Chains.

alt_text

ClusterSupplyChain – A graph of interconnected Kubernetes resources with the shared purpose of producing deployable Kubernetes configuration

Delivery – A graph of interconnected Kubernetes resources with the shared purpose of deploying Kubernetes configuration

Runnable – Cartographer’s …

Read more

Kubeapps 2.4.3 Now Supports Carvel and Flux Packages

The newest release of Kubeapps, version 2.4.3, adds support for Carvel and Flux packages, no longer making Helm charts the only option to choose from

Raquel Campuzano Godoy & Michael Nelson April 25, 2022

Originally published on the Bitnami blog

A new release of Kubeapps is out, and it introduces major changes that mark a milestone in the history of this tool. We are thrilled to announce that the support of different Kubernetes packages has now become a reality with the implementation of the Kubeapps API service. Helm charts are no longer the only option to choose from, as now Kubeapps users can deploy Carvel and Flux packages as well!

In addition to this new capability, the Kubeapps team has solved a long-standing security issue by removing the reverse proxy to the Kubernetes API server.

Keep reading to learn more about how the team has implemented a pluggable architecture that allows users to discover new implementations that make Kubeapps a robust and secure way to deploy applications on Kubernetes infrastructure.

We will also cover how to deploy and manage Carvel and Flux packages from the Kubeapps user interface (UI).

Kubeapps APIs: A Pluggable System Supporting Different Kubernetes Packages

The design of the Kubeapps APIs server solves two main goals for Kubeapps.

Enables pluggable support for presenting catalogs of different Kubernetes packaging formats for installation.

Kubeapps coupled with Helm prior to this release and was tied closely to the Helm packaging API for listing, installing, and updating Helm charts. The team has abstracted the functionality for listing, …

Read more

.NET Beyond 2022 Wrap Up

A wrap up of the exciting .NET Beyond 2022 event.

Lizz Smullen April 11, 2022

The whirlwind that was .NET Beyond 2022 just wrapped up. If you had a chance to attend, we hope you learned a lot, and had some fun in the process. If you couldn’t attend, check out some talk summaries below. If you want to know more, check out all the talks on YouTube.

Why F# Works in the Enterprise

Python and Java developers who have tried using F# in a .NET ecosystem are in awe over the succinctness in their code.

“It’s not like Python,” said Philip Carter, a senior product manager at HoneyComb, “It has a heritage based on functional programming, not out of smorgasbord programming that Python does.”

Carter, who spent six years working at Microsoft, and five years working with F# for Visual Studio Code, said that F# got its start as a basic Microsoft research project, “It’s really hard for a research project to become a real product,” said Carter.

According to Carter, F# provides excellent Visual Studio Code integration because it lets you use first class software development kits (SDKs) such as Badger, AWS, or any other service that has a standard .NET or small library. He also likes Immutable first, a feature that forces developers to structure their programming so that everything flows cleanly, from top to bottom. He said you can declare something as mutable by just turning off the Immutable first feature.

Immutable first …

Read more

Build an API Gateway with YARP, C# and .NET 6

Build a basic API Gateway using YARP, a highly customisable open-source reverse proxy library built by developers from within Microsoft

Layla Porter March 1, 2022

Consider an API gateway to be a virtual “garden gate” to all your backend services. Implementing one means that all external traffic must pass through the gateway. This is great as it increases security and simplifies a lot of processes such as rate limiting and throttling.

Cover image of a gateway silhouetted by the sun

There are many paid for services that offer API management but they can be costly and you may not need all the features they offer.

In this tutorial, you will build a basic API Gateway using YARP or “Yet Another Reverse Proxy”. YARP is an open-source library built by developers from within Microsoft. It’s highly customisable, but you are just going to use a simple implementation today.

Before you begin you will need:

What does an app look like without an API gateway?

Below is a simple diagram consisting of 3 services and a database - note our demo looks slightly different to this. The front end client app is talking directly to all three services directly. This means that each service will need to manage its own security and makes implementing patterns such as service discovery much harder.

Diagram showing a client and how it talks directly to 3 backend services

Once you add in an API gateway, as you can see in the diagram below, all external traffic …

Read more

Build an API gateway with .NET 6, C#, YARP, and Netflix Eureka

Learn how YARP can work with Eureka, a RESTful service used for service discovery, load balancing, and failover

Layla Porter March 1, 2022

In this previous blog, you learnt how to implement an API gateway in .NET 6 with YARP, a reverse proxy library. All external traffic can be routed through the API gateway to the backend services, making securing and managing the application far easier.

Cover image of a white wooden gate nestled in some large shrubs with white flowers

However, if you have a scalable, distributed system, your API gateway may not know where all of the instances of your services actually are. That’s where a service registry, such as Netflix Eureka can save the day.

Eureka is a RESTful service that is primarily used in the AWS cloud for the purpose of discovery, load balancing and failover of middle-tier servers. It plays a critical role in Netflix mid-tier infrastructure. It’s built with Java, but for your purposes, you can run Eureka easily from a Docker container.

You’ll register all your services and instances with Eureka and then Eureka will tell your API gateway where everything is, so that it can direct traffic to the right place.

Before you begin you will need:

The API Gateway

If you followed along with the Build an API gateway with .NET 6, C# and YARP blog …

Read more

Log4Shell Vulnerability Spotlights the Importance of Adopting Trusted Open Source Software Providers for the Enterprise

In this blog post, you will learn about the responses and mitigations that have been released to alleviate the impact of the Log4Shell vulnerability, which patches are available to keep your installations secure and how VMware Application Catalog (VAC) is the definitive alternative for the enterprise to the endless manual fixes and component updates.

Martin Perez & Raquel Campuzano Godoy December 21, 2021

On December 9, a vulnerability in one of the most popular Java libraries was revealed. Log4j (version 2) was affected by a zero-day exploit that resulted in Remote Code Execution (RCE), allowing attackers to do remote code execution in vulnerable environments. At this stage, everyone has heard about CVE-2021-44228, also known as Log4Shell.

Log4j is a library prevalent in Java ecosystems used by millions of applications everywhere, so the impact of this CVE has been massive. Proof of its impact is the high CVSS score given to this CVE: 10 out of 10.

Also, products from major cloud vendors, such as AWS, Intel, Cisco, RedHat, and even VMware, have been largely affected by the vulnerability. The impact on businesses was enormous, causing most engineering and operations teams to stop their daily activities and product development in order to prioritize applying patches coming from upstream projects and patching their own in-house built software to attend to this critical vulnerability. Considering the potential effects and risks that this vulnerability can have on applications and sites built using this library, the team behind Log4j immediately started to work on a fix.

In this blog post, we go over the responses and mitigations that have been released, how some of them didn’t solve the problem, and which patches are available to keep your installations secure against this …

Read more

The New Global Usings Directive in C# 10

Learn all about the new global 'using' directive in C# 10!

Layla Porter November 30, 2021

If you’re a C# developer, you’ll recognise the oftentimes extensive list of using directives at the top of a .cs or .razor file. You’ll have also most likely considered a way to obfuscate them - maybe in a #REGION, maybe a setting in an IDE. Many are duplicated across multiple files; I’m looking at you, System, and all your little derivatives!

Although there is nothing inherently wrong with this, it’s been a convention since 2002, it just takes up a lot of screen space at the top of every file.

With C# and .NET 6, however, all that can change…

Cover image

Introducing the new Global Using Directive!

Before you can start making use of Global Using Directive, you will need:

  • The .NET 6 SDK installed
  • An IDE of your choice as long as it supports .NET 6

Creating a global usings file

Many of the most common using directives will already be in a global format out of the box, known as “implicit using directives”, but I find this obfuscation a little confusing.

Implicit using directives will mean the compiler automatically adds a set of using directives based on the project type, meaning the most common libraries will be available out-of-the-box. For example, in a console application, the following directives are implicitly included in the application:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using …

Read more

Plain English Description of Certificates, Certificate Authorities (CA), and Local Development

learn more about SSL, Certificates, and CAs from a higher level perspective.

Steven Pousty November 18, 2021

Most of us do application development work on our local machine. We also come to understand that HTTPS (TLS/SSL) is the new standard for all our web applications. But we often skip using them on our local machine because either: \

  1. We don’t think it is important for our local development
  2. We don’t understand the process and how to do it on our local machine

The reason why you should care about it for local development is:

Every difference between your local development and production adds to the risk that your code won’t run in production.

This post will help you understand the process and set you up to grok what you are doing when you do the actual commands to make this work on your local machine. This post is NOT going to talk about certificates in production or in a public key infrastructure (PKI). While many of the concepts are similar, the security implications are much more serious once you move past just your local machine.

What this post covers (and what it doesn’t)

We will start by talking about TLS/SSL for web applications. You may also know that you can use TLS/SSL for connecting database (DB) client software to the DB server. Finally, certificates are highly used in Kubernetes, even if you are running it on your local machine. As an application developer, it is getting harder and harder to ignore the use of TLS/SSL in your daily development work. And to make …

Read more

Deploy Applications with Confidence and Control with VMware Application Catalog and Sealed Secrets

Sealed Secrets is a Kubernetes controller and a tool for one-way encrypted Secrets. In this blog post you will learn how to deploy the Sealed Secrets Helm chart through VMware Application Catalog (TM) and use it to encrypt an application running on your cluster.

Raquel Campuzano & Juan Ariza November 15, 2021

First published on https://blog.bitnami.com/2021/11/deploy-applications-with-confidence-vmware-application.html.

As more organizations adopt Kubernetes as the preferred infrastructure for running their IT resources, enterprise SRE teams tend to adopt a GitOps mindset.

The GitOps approach consists of embracing different practices that manage infrastructure configuration as a code. This means that Git becomes the single source of truth and as such, all operations are tracked via commits and pull requests. Thus, every action performed on the infrastructure will leave a trace and can be reverted, if needed.

These practices bring a lot of benefits to IT admins, since automation and ease of managing Kubernetes configurations are extremely important to them.

Despite this, there’s a high probability of discovering security risks when managing the access to the applications running in a Kubernetes cluster. This is where Sealed Secrets comes in. Sealed Secrets is a Kubernetes controller and a tool for one-way encrypted secrets.

Why Should Every Cluster Controller Use Sealed Secrets to Protect Their Deployments?

When cluster operators and administrators follow the GitOps approach, they find that they can manage all Kubernetes configurations through Git except for secrets. Sealed Secrets solves this problem by encrypting the secret into a new Kubernetes object called “SealedSecret” …

Read more

Advanced Service Concurrency and Rollouts with Tanzu

Release your applications to production more often with easy to implement, yet sophisticated rollout patterns. Cloud Native Runtimes for VMware Tanzu and Spring Cloud Gateway for Kubernetes provide API driven control for service routing to concurrent application versions. We will introduce these Tanzu components and walk through a transformation journey demonstrating common use cases.

Dodd Pfeffer November 5, 2021

Modern application teams that release frequently to production find that dynamic service routing is a crucial capability. Deployment strategies like blue-green and canary are dependent upon routing. These strategies involve multiple concurrent “versions” of a service to be deployed and routing rules to determine how traffic is sent to each version. Ideally the routing rules are exposed as an API and can be managed via an application operator, or even better, with automation.

Taking this to the next level of detail, let us look at a number of use cases:

  1. Within a “strangler fig pattern” modernization effort, gradually adjust traffic volume toward a new service while monitoring performance SLAs and functional efficacy.
  2. Implement an A-B testing pattern among alternative implementations of the same service endpoint based upon a weighted distribution, timeframes, or a calling system IP address.
  3. Route a small percentage of traffic toward “canary” deployments as part of a continuous delivery processes.
  4. Expose the latest release version for testing without exposing it to the general user base.
  5. If a new release-related defect has been identified impacting only iPhone users, route all requests from iPhones to the previous released version.

These are realistic and common requirements, and the solution domain spans several aspects of a distributed and complex system of cloud technologies. …

Read more

So You want to Build an Operator?

An introduction to the primary concerns organizations should consider when building a Kubernetes application platform.

Rich Lander November 3, 2021

Well, of course you do! It’s the reason you enrolled in online training, became part of the Kubernetes Community and read case studies on all things Kubernetes. You put a lot of time and effort into learning how to build a Kubernetes Operator to manage software and reduce operational toil for your company.

Get ready for all your hard work to pay off. You are about to build a Kubernetes Operator. Your first order of business is to assemble a team of Kubernetes enthusiasts. There are some things that the team is collectively going to need to discuss, including the foundational feature set for building the operator, and the type of operations that the operator is going to control like upgrades, backups, restores, and failovers. It’s also a good idea to collaborate over design considerations so that the team is effectively working with, and not fighting against, Kubernetes patterns.

Assemble a Development Team to Build the Operator

Assemble a development team that collectively know how to use:

  1. Kubernetes and the Kubernetes Control Plane.
  2. The programming language and tools to build the operator.
  3. The application the operator is going to control.

Keep in mind that the operator you are building is an extension to the Kubernetes control plane. Understanding how that control plane works so that you can seamlessly extend it is crucial. Having deep knowledge and experience in both …

Read more

Building Platforms on Top of Kubernetes

The Kubernetes tools landscape keeps growing, with more and more companies and projects building specific tools to tackle specific challenges. Making sense of all these tools and how they can be used to build a SaaS platform on top of Kubernetes is a full-time job.

Mauricio Salatino October 14, 2021

The Kubernetes tools landscape keeps growing, with more and more companies and projects building specific tools to tackle specific challenges. Making sense of all these tools and how they can be used to build a SaaS platform on top of Kubernetes is a full-time job.

These platforms are commonly built to provision a set of domain-specific components that provide the services (a set of features) that the platform is offering. You might end up having internal “customers,” such as different departments or teams that require new instances of these components, or external customers that are willing to pay for a managed instance of these components. Whether they are internal or external, application platforms should provide a self-service approach, where each customer can access a portal and easily request new instances (that could be via GUI, CLI, and/or whatever is most natural for that user).

Example customer portal for self-service platform allocation

If you are building this kind of platform, and you are also fully invested in Kubernetes, you might want to look for tools that are built on top of the Kubernetes APIs. This way, the solution you build can be run on top of any Kubernetes installation, managed or on-premises.

This blog post covers three different angles that you will need to cover if you are tasked to build one of these SaaS platforms.

  • Packaging and building your services
  • Creating isolated instances for your customers …

Read more

Zero to Kubernetes Platform

An introduction to the primary concerns organizations should consider when building a Kubernetes application platform.

Rich Lander October 6, 2021

Are you thinking about building an application platform with Kubernetes? If so, this article is for you. It discusses the major platform elements that you should consider. To some degree, every use case is different. You likely have your own edge cases and unique requirements, but by the time you solve the necessary items in this article, you will be familiar enough with the topic to get the job done.

Photo by Mohammad Bagher Adib Behrooz on Unsplash

The first thing to recognize is that Kubernetes is a container orchestrator. Scheduling and running containerized workloads across clusters of machines is a complex concern. Kubernetes uses sophisticated systems to achieve these ends but it’s purpose is fairly narrow. Kubernetes provides interfaces for container networking, persistent storage and container runtime, but it does not solve them directly, or provide enterprise-grade authentication for it’s API. Instead, Kubernetes allows you to configure a webhook to implement this functionality. It does not provide comprehensive tenancy, observability, service routing or policy control systems. Platform services must be installed to provide these.

Therein lies the first pattern to familiarize yourself with when using Kubernetes: it is a supremely extensible and composable system. Kubernetes provides the foundation upon which to build an application platform that meets your organization’s specific needs. It does incur …

Read more

Expanding the Developer Toolbox with VMware Tanzu Community Edition

VMware Tanzu Community Edition gives developers another tool in their toolbox to learn and use Kubernetes to deploy their workloads.

Grant Shipley October 4, 2021

Kubernetes is a wonderful piece of software and provides developers capabilities they have not had readily available to them in most organizations. This is a game changer for what developer productivity can look like in the future. I am excited about the commitment of VMware to make Kubernetes accessible to the masses by simplifying not only the operational use of the platform, but also creating and collaborating on tools targeted specifically for developers and their applications.

You see, Kubernetes can and should be more than just a deployment platform for our application code. We should be able to utilize the power and features of Kubernetes for our daily development processes. Think about what you could accomplish if you had the power and flexibility of Kubernetes for your local development before you perform a git push. Think about all of the things you could play with and prototype before kicking off your CI/CD pipelines for a full integration test.

But what good does it do to have a great developer experience on top of Kubernetes if developers don’t have access to Kubernetes to begin with? This is problem No. 1 that we need to address. When VMware wanted to create an open source Kubernetes offering, I knew I had to be part of it. VMware Tanzu Community Edition is the open source project that will bring Kubernetes to a developer workstation near you. Chances are your IT …

Read more

Announcing the Redesign of the Tanzu Developer Center!

You may notice a few differences in the Tanzu Developer Center. Read this post to learn about what's new, and how you can get the most out of the site!

Tony Vetter September 27, 2021

You may have noticed a few changes since the last time you visited the Tanzu Developer Center. The team has been hard at work making sure our content is easier to find, and more oriented toward reaching specific objectives. Today, we have launched that redesign!

We started the Tanzu Developer Center with the goal of creating a space where developers could learn about best practices for developing, deploying, and managing applications — applications that are built to take advantage of current platform technologies and frameworks.

Since its launch in June 2020 (see our launch announcement blog, the Tanzu Developer Center has grown to host hundreds of guides and blog posts. Dedicated guides walk readers through how to use specific technologies. Timely blog posts provide thought leadership and new product announcements.

Since then, along with a lot of additional content, we have continued to add functionality to the site to better serve our visitors. In our 1st birthday announcement in June 2021, we discussed changes, such as the addition of Workshops, which gave developers a hands-on way to use technologies with easy-to-follow guides, as well as fully functional environments to experiment in. [Outcomes] brought additional structure to guides by creating content series oriented toward learning more complex concepts.

But with the addition of so much new content and new features, and …

Read more

Kubeapps 2.3.4 - Easier Deployment in VMware Tanzu™ Kubernetes Grid Clusters

A new Kubeapps release is out, and it is even easier to run in TKG clusters! The last version of Kubeapps necessitated a manual update of the current Pinniped version to the latest – this step is no longer required. Keep reading to learn more.

Raquel Campuzano Godoy September 23, 2021

A new Kubeapps release is out, and it is even easier to run in TKG clusters! The last version of Kubeapps necessitated a manual update of the current Pinniped version to the latest. This step is no longer required. Cluster administrators can now configure Kubeapps to use the built-in Pinniped instance to authenticate through the same OIDC provider as they have already installed in their VMware Tanzu™ Kubernetes Grid (TKG) clusters.

Keep reading to learn more about how to benefit from installing the Kubeapps 2.3.4 version.

Advanced Features for Tanzu Users

Kubeapps enables users to consume and manage open-source trusted and validated solutions through an intuitive web-based interface.

With the previous release, Tanzu users gained the ability of deploying Kubeapps directly to TKG workload clusters. This integration allows users to operate Kubernetes deployments through a web-based dashboard both on-premises in vSphere, and in the public cloud on Amazon EC2 or Microsoft Azure.

Kubeapps provides a wide catalog of ready-to-run-on Kubernetes solutions. In addition to the default Kubeapps catalog, Tanzu users have the flexibility to configure either VMware Tanzu™ Application Catalog (TAC) as a private chart repository or any of VMware Marketplace™ Catalog or the Bitnami Application Catalog as public chart repositories. This extends the number of available solutions and sources for …

Read more

SpringOne Labs Now Available on the Tanzu Developer Center

Many of the workshops previously available at the Spring One conference are now available on the Tanzu Developer Center. Check out this post for a description of what is now available.

Ivan Tarin September 21, 2021

Interactive labs with real containers, on real K8s clusters on the latest Spring open source and Tanzu + open source

title image Photo by Nicole Wolf on Unsplash

SpringOne is the leading conference for the most popular and beloved Java framework, Spring. This year’s conference, held September 1–2, was packed with useful information and exciting announcements. In addition to the keynotes and breakout sessions, the self-paced labs had in-depth training on the latest breakthroughs in Spring and related technologies. The labs are made for all skill levels and can be completed even with little Spring knowledge, all within a real environment. Best of all, they are free, and now they will be hosted at the VMware Tanzu Developer Center!

Learning with the labs in the Tanzu Developer Center is a shortcut to leveling up your coding skills and trying new technologies. The labs are responsive and provide a real environment designed to reduce student errors. Your environment exposes containers and real Kubernetes clusters and includes the required packages and tools while avoiding the hassle of setting up a new environment. The labs include an integrated code editor, terminals, and easy-to-follow instructions. This is a big time saver, saving you the trouble of deleting and uninstalling software and tearing down an environment. The SpringOne labs give you the opportunity to test new tech without having …

Read more

Getting Started with VMware Tanzu Application Platform Beta 1

What is Tanzu Application Platform, and how do the individual components work together to help build a secure, repeatable, and powerful platform for developers.

Tony Vetter September 13, 2021

This post is for getting started with Beta 1. On October 5th 2021, VMware Tanzu Application Platform Beta 2 was released. And since then, other Betas have been released. Get more information on Tanzu Application Platform here.

By now you may have seen the announcement at the recent SpringOne conference for VMware’s new Tanzu Application Platform. You understand the power a platform like this can bring to your production environments, but have you considered what it can do for your inner loop development? Not every commit goes to production. That’s why you need a way to locally deploy and test your changes locally before going to production.

You also need a way to locally evaluate and use the Tanzu Application Platform. You want to understand how it works, and what it can do for your organization before a potential deployment. If this sounds like you, I have a 2-part series on installing and using Tanzu Application Platform Beta 1 locally, using KIND.

  • Part 1, shows you how to install all the necessary components of the Tanzu Application Platform onto a KIND Kubernetes Cluster.

  • Part 2, shows you how to access and utilize the Tanzu Application Platform to deploy a sample application.

    Both of these guides will heavily leverage the existing install documentation for Tanzu Application Platform, although heavily modified for this specific use case (i.e. deploying in KIND). …

Read more

VMware Joins Docker Verified Publisher Program with its Bitnami, Tanzu and Spring Cloud Products

VMware joins Docker Verified Publisher Program with its Bitnami, Tanzu and Spring Cloud products. From now on, developers can quickly recognize trustworthy containerized images as well as they will have unlimited container image requests for Bitnami, Tanzu, and Spring cloud repositories.

Raquel Campuzano Godoy August 5, 2021

“VMware is pleased to join the Docker Verified Publisher’s program. This provides developers unrestricted access to our artifacts and allows them to safely adopt the popular open-source technologies we’ve made available. We are excited that VMware Tanzu customers, in particular, will benefit from a wider range of complementary services they can leverage as they quickly get apps to market.” - Ashok Aletty, VP Engineering, VMware

In May 2021, Docker, Inc™ announced the launch of its Docker Verified Publisher Program which helps developers recognize trusted publisher software. For development teams, this is huge, since this program simplifies the consumption of secure and verified components for them, as they build their applications.

What is the Docker Verified Publisher Program?

When building container-based applications or deployment templates such as Helm charts, it is a frequent practice to grab pre-built building blocks to quickly create application images. A common concern among developers is to make sure that the pieces being used to build their applications are secure, reliable, maintained and up to date. Nobody wants to spend time fixing security issues or exposing their software supply chain to malicious content.

To make it easier to select robust, trusted, and reliable software when navigating through Docker Hub, Docker has launched the Docker Verified …

Read more

Kubernetes Operators: Should You Use Them?

A discussion of the up-front engineering costs associated with using Kubernetes operators, and when you should make the investment.

Rich Lander July 2, 2021

Kubernetes is the leading trendsetter in the future of autonomous software, having made it possible for companies throughout the world to experience a tremendous reduction in human toil when it comes to all types of software management and deployment.

Kubernetes has a reputation for being a complex software system with high startup costs and an intense learning curve, yet it remains steadfastly popular among companies that made the initial investment and immediately started reaping the benefits of improved efficiency and effectiveness in delivering automated, on-demand software that accelerates time-to-value.

Many of the companies that made the lucrative decision to choose Kubernetes as a distributed software system to manage their applications quickly recognized the value of expanding the power of their Kubernetes ecosystem through Kubernetes operators that reduce operational toil in platform services and tenant workloads.

Reduce operational toil with Kubernetes operators

You can leverage Kubernetes operators to accomplish all types of automated tasks, including software deployments, management, troubleshooting and updates through custom resources to define the state of the system, and custom controllers to reconcile the existing state of the system with the desired state of the system defined in the custom resource.

There’s also an impressive assortment of Kubernetes …

Read more

Understanding the Differences Between Dockerfile and Cloud Native Buildpacks

Dive into the pros and cons between Dockerfile and Buildpacks

Cora Iberkleid June 28, 2021

Container images enable you to bundle an application with all of its dependencies—soup to nuts, all the way down to the OS file system. Effectively, you are packaging your app and its environment into a single, immutable, and runnable artifact. You can then drop that image onto any container runtime and you’re (nearly) off to the races.

The benefits of taking this approach over deploying an application-only artifact onto a custom and curated environment are well established: greater predictability, repeatability, portability, and scalability, to name just a few. So, what’s the catch? The responsibility of providing the runtime and OS shifts from the ops or IT team that formerly created and maintained the target environment to the dev or DevOps team that is now packaging the application as an image. With this transition, organizations large and small must reimagine how they ensure consistency, security, transparency, and upkeep of these modernized deployable artifacts.

How you build your images is a key part of the answer. Let’s compare two approaches—Dockerfile and Cloud Native Buildpacks—to see how they measure up when it comes to meeting, or exacerbating, these challenges.

What Is Dockerfile?

Dockerfile is the oldest and most common approach for building images. A Dockerfile is a script where each command begins with a keyword called a Dockerfile instruction. Each instruction …

Read more

Kubeapps Meets Tanzu Kubernetes Grid: a New Release is out

The new release of Kubeapps (v.2.3.2) is now available for deployment on VMware Tanzu™ Kubernetes Grid™ (TKG) workload clusters. Read this blog post to learn how to use this new capability in your TKG clusters.

Raquel Campuzano Godoy June 11, 2021

Special thanks to Antonio Gamez and Michael Nelson, members of the VMware Kubeapps Team

The latest version of Kubeapps (v.2.3.2) is now available for deployment on VMware Tanzu™ Kubernetes Grid™ (TKG) workload clusters. VMware Tanzu users already benefit from deploying Kubeapps in several environments and, now with a little configuration Kubeapps can be integrated with your TKG workload cluster.

In addition to this capability, Kubeapps also features full compatibility with the latest versions of Pinniped which means that it can be used with any OIDC provider for your TKG clusters and even in managed clusters such as Azure Kubernetes Service (AKS) and Google Kubernetes Engine (GKE).

Want to know more? Keep reading to discover the latest capabilities of Kubeapps that will enable developers and admin clusters to deploy and manage trusted open-source content in TKG clusters.

A bit of History: What is Kubeapps?

Kubeapps is an in-cluster web-based application that enables users with a one-time installation to deploy, manage, and upgrade applications on a Kubernetes cluster.

This past year, the Kubeapps team has added key new features to support different use cases and scenarios. Firstly, we added support for private Helm and Docker registries and later, in Kubeapps version 2.0, we built support to run Kubeapps on various VMware Tanzu ™ platforms such as Tanzu ™ Mission Control, …

Read more

Tanzu Developer Celebrates Its 1st Birthday with Some Great New Features!

What a year it's been! Let's take a look at what's changed in the last 12 months, including a new feature launching today!

Brian McClain June 1, 2021

My, how time flies. It seems like just yesterday that the Tanzu Developer Center launched. Our initial showing had what we believed at the time to be a wide array of content, from guides to videos to code samples. Over the last 12 months, though, we’ve really seen our content grow.

Tanzu.TV

With shows that run monthly, weekly—even daily—each and every episode is always a great time. Tanzu Tuesdays, for example, hosted by Tiffany Jernigan, features a new guest every week who takes you into a deep-dive of a topic of their choosing, complete with live demos and coding. Code, on the other hand, is a weekly show hosted by the Spring developer advocates, who walk you through complex, real-world scenarios and show you the tools and techniques you can use to solve them. Make sure to check out all of our shows on Tanzu.TV!

Workshops

In September of 2020, we launched self-paced workshops on the Tanzu Developer Center. Complete with your own personal environment right in the browser, these workshops offer hands-on instructions for working with new technologies and techniques. For example, our Kubernetes Fundamentals Workshop teaches you how to prepare and deploy your applications on Kubernetes without having to set up your own cluster or install anything locally.

VMware Tanzu Labs Practices

VMware Tanzu Labs has actually been around for a long, long time. Previously known as VMware …

Read more

KubeCon Europe 2021

VMware's Open Source projects as presented during KubeCon + CNC Europe 2021

Tony Vetter April 30, 2021

Greetings KubeCon + CNC Europe Attendees!

We hope you are enjoying your time at KubeCon and CloudNativeCon! Hopefully, you have seen VMware’s keynote presentation around just a hand full of the open source projects VMware is involved in. Well, if you are interested in learning more about those projects, and maybe even trying them out for yourself, you’ve come to the right place. Below, we have some great content for you to look through for each of these projects. Enjoy!

Carvel

Knative

Buildpacks

Read more

API Rate Limiting with Spring Cloud Gateway

Using Spring Cloud Gateway to manage API requests rate.

Haytham Mohamed April 22, 2021

One of the imperative architectural concerns for software architects is to protect APIs and service endpoints from harmful events such as denial-of-service attacks, cascading failures, or overuse of resources. Rate limiting is a technique used to control the rate by which an API or a service is consumed, which in turn can protect you from these events that can bring your services to a screeching halt. In a distributed system, no better option exists than to centralize configuring and managing the rate at which consumers can interact with APIs. Only those requests within a defined rate would make it to the API. Any more would return an HTTP 429 (“Too Many Requests”) error.

An example how a gateway between the consumer and an API can help limit the number of requests the API is serving

Spring Cloud Gateway is a simple and lightweight component that can be used to limit API consumption rates. In this post, I am going to demonstrate how easily that can be accomplished using a configuration method. As shown in the figure below, the demonstration consists of both a front- and backend service, with a Spring Cloud Gateway service in between.

The gateway can sit between the frontend and the backend to help manage the traffic between the two

No code whatsoever is needed to include the Spring Cloud Gateway in the architecture. You need instead to include the Spring Boot Cloud dependency org.springframework.cloud:spring-cloud-starter-gateway in a vanilla Spring Boot application, then you’ll be set to go with the appropriate configuration settings.

Requests received by Spring Cloud Gateway from a …

Read more

Introducing the Tanzu Observability Slug Generator

Announcement for the open sourcing of code that generates Tanzu Observability URL

Dan Florea April 15, 2021

A great feature of Tanzu Observability is that all context about the chart or dashboard that you are looking at is encoded in the URL, which makes it easy for you to share those links with your colleagues and to deep link into our product from other places such as wiki pages. A consequence of this is that the URL slug is rather involved. This is not a problem when the UI generates the URL, but it becomes very tedious when customers try to create the URL on their own in order to automate and embed Tanzu Observability charts and dashboards outside of the product itself.

To help customers take better advantage of Tanzu Observability charts and dashboards as well as allow easier automation and customization, we recently open sourced our Tanzu Observability URL slug generation code. This code lets you programmatically generate links to charts and dashboards that you can then embed wherever you like to give users an easy to find view of the metrics that matter to them.

What is a URL Slug?

If you are not familiar with a URL slug, it is the last part of a URL that comes after the domain name. For example:

https://www.vmware.com/company.html

In the URL above, “company.html” is referred to as the URL slug.

In some cases, the URL slug is relatively simple. In the case of a Tanzu Observability chart or dashboard, a lot of information is encoded in the slug which makes it difficult for …

Read more

Measuring the Immeasurable

We summarize one fascinating and helpful section of How To Measure Anything by Douglas Hubbard, along with our notes and thoughts, as this section is particularly helpful for the Product Valuation workshop.

VMware Tanzu Labs March 22, 2021

How To Measure Anything by Douglas Hubbard is a popular book at VMware Tanzu Labs. In it, Hubbard takes a strong, opinionated stance on both the concept of measurement, the value of measurement, and how to measure things that are considered immeasurable.

One of our team members published an old-fashioned book report on How to Measure Anything, which you can read here. Below we summarize one fascinating and helpful section of the book, along with our notes and thoughts, as this section is particularly helpful for the Product Valuation workshop.

Immeasurability and the Concept of Measurement

First we want to highlight Hubbard’s analysis of why people often think things are “immeasurable.”

There are just three reasons why people think that something can’t be measured; these reasons are based on misconceptions about different aspects of measurement. We’ll refer to these misconceptions them as the concept of, object of, and method of measurement:

  • Concept of measurement - The definition of measurement itself is widely misunderstood.
  • Object of measurement - The thing being measured is not well defined.
  • Methods of measurement - Many procedures of empirical observation are not well known.

We’ll expand upon each of those misconceptions.

The Concept of Measurement Misconception

Implicit or explicit in all of these misconceptions is that measurement is a certainty—an exact quantity with …

Read more

Using Knative Eventing for Better Observability

Getting a better picture of Kubernetes events

Tyler Britten February 22, 2021

If you’re using one of the great observability tools out there, you probably already mark your data with important events that may affect it—deployments, configuration changes, code commits, and more. But what about changes Kubernetes makes on its own, like autoscaling events?

Knative is a Kubernetes-based platform used to deploy and manage serverless workloads. It has two components: serving and eventing, both of which can be deployed independently. In this post, we’re going to focus on eventing here, which can automatically mark events in your data or trigger other events based on your needs.

Knative Eventing

The eventing component of Knative is a loosely coupled system of event producers and consumers that allows for multiple modes of usage and event transformation.

Among the other components in this system are the broker, which routes the events over channels, and triggers, which subscribe specific consumers to events. For our example, we’re going to keep things very simple, with a single broker using a single in-memory channel, which itself is not to be used in production.

Kubernetes Events

If we want Kubernetes events as a source, we can use the API server source as an event producer. This will publish any changes seen by the API server to the channel we’re using, and we can consume that event with a small golang application and forward to the observability tool of our …

Read more

The Hate for YAML: The Hammer or the Nail?

YAML gets a lot of hate, but is it more nuanced than that?

Brian McClain January 19, 2021

Those four letters that strike dread in the hearts of every Kubernetes user. That short acronym that pierces like a knife in the dark. The aura of terror that follows it, enveloping everyone and everything as its reach seems to grow to the ends of time itself.

YAML.

Alright, maybe that’s a bit dramatic, but there’s no doubt that YAML has developed a reputation for being a pain, namely due to the combination of semantics and empty space that gets deserialized to typed values by a library that you hope follows the same logic as others. This has fostered frustration among developers and operators no matter what the context. But is the issue as simple as “YAML is a pain”? Or is it a bit more nuanced than that?

Last year, at Software Circus: Nightmares on Cloud Street, Joe Beda gave a talk on this very subject titled I’m Sorry About The YAML. In it, he explores the factors that contribute to YAML’s reputation, or the so-called “two wolves” inside the hatred of YAML—the frustration with YAML itself and the problem that it’s being used to solve—and how they contribute to each other.

The Problem with the Hammer

Beda starts by talking about YAML itself, both writing it and reading it. Of course, the first thing that comes to mind is the meaningful use of blank space. Opinions run high in this discussion, as it’s a situation with which Python developers are intimately familiar. Indeed, …

Read more

Data Science with Python & JupyterHub on Kubernetes - Part 2

Using JupyterHub on Kubernetes

Thomas Kraus January 8, 2021

In a previous post, we discussed the advantages of running JupyterHub on Kubernetes. We also showed you how to install a local Kubernetes cluster using kind on your Mac, as well as how to install the JupyterHub Helm chart on a Kubernetes cluster.

In this post, we will focus on the experience of the developers, who are going to be leveraging our service to develop new models using scikit-learn or perform calculations and transformations of large datasets using pandas. To illustrate the value that Jupyter Notebooks and JupyterHub provide in a multiuser environment, we will clone a Git repository containing two example Jupyter Notebooks that we can work with.

Using JupyterHub

Each user that accesses JupyterHub will have their own workspace complete with a single-user Jupyter Notebook server, which uses the JupyterLab Interface. To demonstrate the capabilities of JupyterHub and Python, we will check out the following sample notebooks that we have written and executed:

  • industry-revenue-analysis.ipynb – Analysis of historical financial data organized by industry that leverages the pandas library
  • ml-stock-predictor-knn-v4.ipynb – Machine learning (ML) based on revenue data from public financial statements that leverages the scikit-learn library for Python

Note: Each time a user logs into the JupyterHub web page, an additional pod will be instantiated for that user and a 10GB …

Read more

Data Science with Python & JupyterHub on Kubernetes - Part 1

Setting up JupyterHub on Kubernetes

Thomas Kraus January 7, 2021

Provisioning environments for data scientists and analysts to run simulations, test new models, or experiment with new datasets can be time-consuming and error-prone. Python is a popular choice for data science use cases, and one of the easiest ways to leverage Python is through Jupyter Notebooks. A web-based development environment for multiple languages, Jupyter Notebooks support the creation and sharing of documents that contain code, equations, visualizations, output, and markup text all in the same document. Because Jupyter Notebooks are just text files, they can be easily stored and managed in a source code repository such as GitLab or GitHub. JupyterHub, meanwhile, is a multiuser hub that spawns, manages, isolates, and proxies multiple instances of a single-user Jupyter Notebook server.

Kubernetes provides the perfect abstractions and API to automate consistent and isolated environments for data scientists to conduct their work. Combining these three things—Jupyter Notebooks, Python, and Kubernetes—into one powerful platform therefore makes a lot of sense.

In the first post in this two-part series, you will learn how to deploy a Kubernetes cluster using kind on a Mac, then how to install JupyterHub into that cluster. In the second post, we will show you how to use the data science and machine learning notebooks you have created on your newly deployed JupyterHub service …

Read more

Digital Transformation: The Coder’s Business Codex

Coté demystifies what the term "digital transformation" means for developers.

Michael Coté November 23, 2020

Who will speak for the various, meaningless phrases and jargon that fills our ears? “Digital transformation,” for example. Year after year, surveys of Very Important People in the form of Gartner’s CIO Agenda Report and others show rising interest, even “do or die” desire for digital transformation. These efforts seem to always be behind: They’re either underfunded or in the process of getting more funding; skilled people are consistently hard to find. And the headwinds! Always with the macro-global headwinds.

But surely a company must transform in order to remain competitive. Indeed, if all these executives are craving “digital transformation” and complaining about how hard it is to achieve, it must be something very important, right?

Well, sort of.

Computers are awesome!

The problem with “digital transformation” is that it’s become an umbrella term to mean any spending on or change to IT. We need to implement remote working? Then we need digital transformation. Our goal is now better analytics? That means digital transformation! Upping our sales through Instagram? Roll in the digital transformation!

When a term is used for everything, it loses its meaning. In such cases, I like to replace “digital transformation” or whatever the phrase of the moment is with “Computers are awesome!” Doing so helps me remember that all people are talking about is using computers to conduct …

Read more

Understanding the Differences Between RabbitMQ vs Kafka

Which is better RabbitMQ or Kafka? This article will outline the functionality offered by both messaging systems and help you make an informed decision when choosing a platform.

Brian McClain November 16, 2020

Three years ago, a colleague of mine wrote a post to help readers understand when to use RabbitMQ and when to use Apache Kafka, which many found to be very useful. While the two solutions take very different approaches architecturally and can solve very different problems, many find themselves comparing them for overlapping solutions. In an increasingly distributed environment where more and more services need to communicate with each other, RabbitMQ and Kafka have both come to be popular services that facilitate that communication.

It has been three years since that post was published, however, which in technology can be lifetime. We thought this would be a great opportunity to revisit how RabbitMQ and Kafka have changed, check if their strengths have shifted, and see how they fit into today’s use case.

What Are RabbitMQ and Apache Kafka?

RabbitMQ is often summarized as an “open source distributed message broker.” Written in Erlang, it facilitates the efficient delivery of messages in complex routing scenarios. Initially built around the popular AMQP protocol, it’s also highly compatible with existing technologies, while its capabilities can be expanded through plug-ins enabled on the server. RabbitMQ brokers can be distributed and configured to be reliable in case of network or server failure.

Apache Kafka, on the other hand, is described as a “distributed event streaming …

Read more

KubeCon NA 2020: For the Modern App Developer

Here is a curated list of some talks to watch at KubeCon NA 2020

Tiffany Jernigan November 11, 2020

KubeCon North America is coming up soon! It will take place virtually November 17th-20th.

The schedule is chock-full of very interesting talks,from introductory overviews to advanced deep dives. When I first saw it, I ended up copying down as many talks as possible to share here because they are all just so good. But I figured I should probably curate a bit, so below you will find a list of my top recommendations, broken down, for the most part, by their respective Special Interest Group (SIG) names.

Talks with a 🌱 next to them are introductory/deep dive talks, and each SIG section header links to its respective SIG page.

Keynotes

If you can, definitely watch all of the keynotes. There is a complimentary pass just for the keynotes if you’re unable to attend the rest of the conference.

If you’re interested in seeing what cool things different companies are working on and/or are interested in, check out the sponsored sessions on Day 1.

API Machinery

Day 2

🌱 Admission Control, We Have a Problem - Ryan Jarvinen, Red Hat

This is an interactive session that will teach you how Admission Controllers play a critical role in securing Kubernetes APIs. You will be able to “implement basic input validation and testing of webhooks for the Admission Controller.”

Day 4

Into the Deep Waters of API Machinery - Federico Bongiovanni & Daniel Smith, Google, & David Eads, Stefan …

Read more

Under the Microscope: Software Observability in a Distributed Architecture

The importance of observability in distributed systems.

Scott Rogers November 4, 2020

It’s the day and age of mountains of microservices, running on various platforms, consuming multiple services from multiple providers. As applications become more and more distributed, they become more complex. Even splitting a monolith into multiple smaller microservices introduces several points of failure. What happens when the two services can’t reach each other over the network? What if one service relies on the other and it crashes? What about if the application slows to a crawl; where would you start looking to figure out why?

Rather than guessing and hoping, you can lean on properly instrumented observability. Being able to aggregate logs and metrics, as well as trace a request as it flows through various applications and services, is as achievable as ever. No matter your language, framework, or platform of choice, chances are you have some great options.

But first, let’s talk about why you should care about observability.

What Is Observability?

I think of observability as the ability to infer the correlation between (seemingly) disparate systems. That means bringing together metrics from many systems in a way that allows us to find answers to questions that speed up both MTTD (the mean time to detect an issue) and MTTR (the mean time to resolve an issue). By themselves, metrics such as CPU, memory, response time, error rates, and latency are valuable, but they will not …

Read more

Debugging a Kubernetes Workload with Octant

Walk through an NGINX deployment with a faulty NGINX configuration to demonstrate how common pitfalls can be identified using Octant.

Sam Foo October 15, 2020

Octant is a tool designed to enable developers without a deep knowledge of Kubernetes to become productive as quickly as possible. This post will walk through an NGINX deployment with a faulty NGINX configuration to demonstrate how common pitfalls can be identified using Octant.

Before You Begin

Before you get started, here are the tools you’ll need:

  • An existing cluster through KinD, Minikube, or a cloud provider
  • An installation of Octant 0.16.1 or above
  • Some knowledge of NGINX (helpful but not required)

Create an NGINX Deployment

Let’s start with a ConfigMap containing a basic NGINX configuration and set the mount path to /etc/nginx. A deployment will mount the volume containing the NGINX configuration for the container. Copy the YAML below.

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-conf
data:
  nginx.conf: |
    user nginx;
    worker_processes  3;
    error_log  /var/log/nginx/error.log;
    events {
      worker_connections  10240;
    }
    http {
      log_format  main
          'remote_addr:$remote_addr\t'
          'time_local:$time_local\t'
          'method:$request_method\t'
          'uri:$request_uri\t'
          'host:$host\t'
          'status:$status\t'
          'bytes_sent:$body_bytes_sent\t'
          'referer:$http_referer\t'
          'useragent:$http_user_agent\t' …

Read more

Need Help Working Remotely? Check Out Our Tips

VMware Tanzu Labs offers some tips for overcoming the challenges many are facing from transitioning to remote work due to COVID-19

VMware Tanzu Labs October 7, 2020

Remote Workspace with Cat

The transition to working remotely due to COVID-19 has proven to be quite a challenge—including for those of us at VMware Tanzu Labs. While remotely communicating and collaborating using digital tools is not new to us, doing so in an entirely distributed environment for the foreseeable future is.

The challenges have been especially daunting when we’ve had to apply the principles of Extreme Programming (XP), namely constant communication, intense collaboration, and ongoing reflection. On top of all that, we engage with new customers on a regular basis to kick off projects multiple times throughout the course of a year. In this new normal, our practitioners must not only quickly bootstrap burgeoning relationships and get up to speed on unfamiliar domains, but build customer-based teams that feature all these new ways of working and in the process, re-define a set of previously shared norms.

There are undoubtedly more challenges left for us to face in our new, all-remote set-up. In the meantime, however, we set out to identify the most pressing problems and come up with the best possible solutions to address them. The result is a series of remote working tips that we are thrilled to share with you.

Our tips

Our remote working tips cover a wide range of topics, from general considerations to specific advice for high-collaboration teams:

Building relationships – How to create …

Read more

Securely Connect with Your Local Kubernetes Environment

Learn how to configure your local Kubernetes environment to work with secure ingress and reproducible URLs, so that development is made easier.

Jorge Morales Pou September 22, 2020

One of the biggest challenges I face when developing applications that will run on Kubernetes is having a local environment that I can spin up at any time—one that won’t give me any problems, won’t cost me money when left on during the weekend or at night, and that I can be confident will have all the same functionality as my cloud-based environment. That’s why I use minikube for local development, as it’s the tool that gives me the best “developer experience” possible. None of the alternatives can really compare.

But minikube is not perfect. There are two things in particular that require some additional configurations.The first is that every time you create a minikube instance you get a different IP address, which becomes an obstacle when you want to recreate your environments. The second is that I prefer my minikube instances to have a registry, which like the services I choose to work with should also be secure. But while the minikube documentation provides instructions for how to secure a registry, it’s still a complicated process.

For both of these reasons, I’m going to explain how I set up my minikube instances so they can be used and recreated easily, and so they give me the ability to work with trusted secured services.

Create your own local CA

When working with secure services, I want the minikube instance to have secure routes and internal access. The easiest …

Read more

Highlights of the SpringOne 2020 Self-Paced Workshops - and Their New Home

Highlights of the SpringOne 2020 Self-Paced Workshops - and Their New Home

Ivan Tarin September 17, 2020

SpringOne 2020 just wrapped, and the self-paced workshops were a complete success! Moreover, all of your requests to continue providing these workshops beyond the conference have been heard. Their future home will be the Tanzu Developer Center. UPDATE: These workshops are available to try out now!

SpringOne 2020 Workshops and Training

For those that missed SpringOne 2020, we’ll quickly recap what the workshops focused on and what they accomplished. Feel free to jump around if you need to; the recap is meant to be a quick read with plenty of pictures.

A total of 10 self-paced workshops covering a range of open source technology—from CI/CD with Tekton, several Spring technologies, and infrastructure technology like Kubernetes, Octant, and Carvel—were available at SpringOne 2020:

  • Kubernetes Fundamentals
  • Container Basics
  • Getting Started with Octant
  • Getting Started with Spring Boot on Kubernetes
  • Spring Boot Probes on Kubernetes
  • Spring Boot Skaffold on Kubernetes
  • Spring Microservices
  • Getting Started with Spring Cloud Gateway
  • Getting Started with Carvel (formerly k14s)
  • Tekton Fundamentals

Each of these workshops has an environment prepared and ready, which is quite refreshing when you are accustomed to spending 15-30 minutes setting up to follow a tutorial. The workshop environment is also native to the technology being used. For example, you can interact with actual Kubernetes clusters in a Kubernetes workshop or work …

Read more

How — and Why — to Write Commit Messages First

Writing your commit messages first keeps you and your pair focused between the feature you are currently trying to implement and whatever current change you are making that could be a smaller, more atomic pushable commit.

Eric Tsiliacos August 19, 2020

You’re halfway through delivering your feature and you decide to take a look at your diff. Doing so gives you a sinking feeling in your stomach, because you see a lot more changes than you were expecting, some of which were refactorings, like renames or structural changes you wish were separated into their own commits. Teasing apart these smaller commits can be messy and would take too much effort at this point. But if you’d tried to preemptively break them apart at random, you’d have run the risk of overengineering your work or creating unnecessary changes.

Writing commit messages first can help pairs navigate between feature delivery and what could be smaller, more atomic commits. It’s analogous to working from “stories” off a backlog or trying to get the next failing test to pass. If you or your pair gets lost in the weeds, pointing back to the story provides a direct and egoless way to get back on track. In test-driven development, pairs stay focused by thinking about small, incremental, falsifiable functionality one failing test at a time. Writing commit messages first can help pairs articulate the space between a feature story and individual tests.

How to Write Commit Messages First

You can use a command line tool such as Stacker to keep track of your commit messages, or simply use pencil and paper. The first commit message is easy to write and provides a frictionless …

Read more

Hello Python, My Old Friend: Revisiting Python in a Cloud-Native Climate

How does Python look in the cloud-native world of today?

Brian McClain August 11, 2020

For quite a while now, I’ve kept an eye on RedMonk’s programming language rankings — which track the usage of all programming languages based on data from GitHub, as well as discussion about them on Stack Overflow —— to get insight into the various language trends. In the January 2020 update, something interesting happened: Python reached No. 2 on the list, taking over Java.

As RedMonk pointed out, “[T]he numerical ranking is substantially less relevant than the language’s tier or grouping. In many cases, one spot on the list is not distinguishable from the next.” However, it’s still interesting, especially as Python has continued to hold the No. 2 spot into the latest ranking after spending approximately seven years ranked third or fourth.

RedMonk isn’t alone in its findings, either. GitHub’s report, The State of the Octoverse also ranked Python as the second most-popular language used on that website, just behind JavaScript. Not only that, it also found Python remains among the top 10 fastest-growing languages in the community, despite already having a foothold with developers. In the JetBrains Python Developers Survey in 2019, it found that one of the most popular things developers use Python for is web development, with Flask and Django fighting for the top web framework.

At one time Python was my main language of choice. For the past few years, I’ve primarily been a Java …

Read more

Declarative Deployments in Kubernetes: What Options Do I Have?

Compare various options for declarative deployment of microservices in Kubernetes.

Dan Dobrin July 30, 2020

Your cloud-native application has been designed, built, and tested locally, and now you’re taking the next step: deployment to Kubernetes.

Isolated environments can be provisioned as namespaces in a self-service manner with minimal human intervention through the Kubernetes scheduler. However, as the number of microservices increases, continually updating and replacing applications with newer versions, along with observing and monitoring the success/failure of deployments, becomes an increasing burden.

Deployment processes are performed while allowing for zero or some downtime, at the expense of increased resource consumption or support of concurrent app versions.

What options do you have to turn deployments into a predictable, repeatable, consistent, easy to observe process? Kubernetes with declarative deployments.

What Are Declarative Deployments in Kubernetes?

The concept of deployment in Kubernetes encapsulates the upgrade and rollback processes of a group of containers and makes its execution a repeatable and automated activity.

The declarative nature of a Kubernetes deployment allows you to specify how the deployed state should look, rather than the steps to get there. Declarative deployments allow us to describe how an application should be updated, leveraging different strategies while allowing for fine-tuning of the various aspects of the deployment process.

The …

Read more

What’s New in .NET Core for Containers and Microservices

Looking at recent changes in .NET 3.0 and 3.1 for containerized workloads

Santiago Vasquez July 22, 2020

Throughout most of my career as a developer, I have written code using .NET (mostly C#). But lately, I have been spending more time with Spring, and I keep hearing comments about exciting changes in .NET around containers. I decided it was time to go back and check out what I had missed. This article highlights some of these changes, emphasizing the ones most relevant to containers and microservices; after all, I am part of the VMware Tanzu Portfolio.

Microsoft released .NET Core 3.0 on Sept. 23, 2019, and a couple of months later, on Dec. 3, 2019, version 3.1 followed. Version 3.0 had already reached its end of life, while version 3.1, with its LTS designation, will have support until Dec. 3, 2022 (more details here).

.NET Core 3.1 contains a tiny number of changes compared to version 3.0. These are mainly related to Blazor and Windows Desktop, in addition to the LTS designation. The bulk of significant changes were in version 3.0. I have selected a subset of items that I believe have a more significant impact on my day-to-day role at VMware Tanzu Labs. For the complete list of changes, go here and here.

From Container-Friendly to Container-Aware

Before version 3, running .NET Core in a container was not for the faint of heart. CoreCLR was inefficient when allocating GC heaps and quickly ran into Out-of-Memory situations. The new version of .NET Core has made significant …

Read more

Kubernetes at Home: Local k8s Options

Compare various options for developing on top of Kubernetes locally using Minikube, kind, and Docker Desktop.

Brian McClain July 17, 2020

When you’re first learning how Kubernetes works, or are developing code that leverages Kubernetes, you’re likely to find yourself looking to one of the many options available to run it locally. As with almost anything in technology, there are more options than you probably know what to do with, which can leave you asking yourself which one you should use. Minikube? Kind? Microk8s? Even Docker Desktop ships with the ability to spin up Kubernetes.

Consider a scenario in which you need to develop and test on Kubernetes locally. For example, Spring Cloud Kubernetes gives you tools such as service discovery, which enables you to look up Kubernetes services, as well as the ability to set properties in your code using ConfigurationMaps. This post will use a simple two-tier application that has a frontend (written in Spring) that looks up where the backend service is (also written in Spring) by looking up the service name that exposes it. The backend service presents a REST API that reports inventory information about an imaginary grocery store, and the frontend application visualizes it.

Since the whole point is to develop locally, you’ll deploy the backend, then get a shell into another pod that mounts a volume from your local machine containing the frontend code. This will allow you to rapidly iterate changes to the code without building and deploying a new container every time. …

Read more

Save Your Stack: Build Cloud Native Apps with Spring, Kubernetes and Cassandra

Build modern, cloud native apps today using the latest innovations from Spring, Cassandra and Kubernetes

Chris Splinter July 8, 2020

You can start to build modern, cloud native apps today using the latest innovations from Spring, Cassandra and Kubernetes. This blog will show you code samples and a fully working demo to get you up to speed in minutes with these open-source technologies.

Context

There’s no shortage of buzzwords, such as “digital transformation”, “cloud native” and “serverless,” being thrown around the internet. Peeling back a layer of the buzzword onion, we do see significant changes in the technology world that have inspired these terms. First, most companies are becoming technology companies as having a presence in the digital space grows as a requirement for survival. Second, the mad dash to the cloud is showing no signs of slowing down. Third, time to market for new applications matters more than ever.

So, how has this affected technology practitioners? Well, the developer population is multiplying rapidly and the pressures for faster delivery of these new digital experiences are getting more extreme by the day. It’s now a fundamental expectation that applications will be there whenever, wherever and however users want to engage. The cloud movement is creating complex architectures that span on-premises and cloud environments, not to mention the pure amount of data coming through these services is exploding. Sounds fun!

Open-source technology …

Read more

A Container Is a Linux Namespace and Networking Basics

Learn how to create two rudimentary containers that can communicate between one another through virtual networks and networking basics with VMware Tanzu

Ivan Tarin June 29, 2020

open source image @freddygthatsme see sources

Understanding the way containers communicate will make your life easier in many ways. Technologies like Kubernetes and Docker abstract away details that make containers special, but can also abstract away intuition and understanding. Without that knowledge, challenges arise—educated problem-solving adds confidence to decision-making!

In this post, we will demystify containers and cover some networking basics by explaining how to create two rudimentary containers and connecting them with a virtual network so they can talk to each other. The host machine, which is the machine where the network lives, views this network as if it were completely external. So, we will connect the network to the host. We’ve also included a bonus section about connecting the network to the internet so your containers can reach Google. You do not need a Linux machine to run through the exercises.

Containers and Networks: What Are They?

A container can be considered synonymous with a Linux network namespace. Keep this in mind. Essentially, a container is a namespace.

Each container runtime uses a namespace differently. For example, containers in Docker get their own namespace, while in CoreOS’ rkt, groups of containers share namespaces, each of which is called a pod.

Containers are based on Linux networking, and so insights learned in either can be applied to both. You can apply these concepts to …

Read more

Git Switch and Restore: an Improved User Experience

A look at how the two commands expands Git's vocabulary to specifically deal with a single aspect of the repository.

Ray Chuan Tay June 23, 2020

If you’re like me and you’ve worked with Git for some time, you might have a couple of commands committed to your memory—from git commit for recording your changes, to git log for sensing “where” you are.

I have found git checkout to be a command that I reach for pretty frequently, as it performs more than one operation. But a single command doing more than one thing might produce a suboptimal user experience for someone learning Git. I can almost picture an XKCD strip:

Learner: What do I run to change the branch I’m on?
You: Use git checkout <branch>.
Learner: What can I run to discard changes to a file?
You: Use…git checkout <file>.
Learner: OK…

Even if you have the commands memorized, there have likely been times when you had to pause after typing a git checkout command while you tried to match it with the operation you had in mind (e.g., “I just typed git checkout … to do X, but I thought git checkout does Y, does this really do what I want?”)

Let’s take a look at what git checkout can do, and an alternative (or two) that can make for a friendlier user experience in Git.

Quick, what does git checkout do?

Perhaps you were trying something out and made some changes to the files in your local Git repository, and you now want to discard those changes. You can do so by calling git checkout with …

Read more

From Commit to Container

Building Containers from your code.

Tyler Britten May 29, 2020

While running software in containers is very popular, it can be a little confusing to figure out the best way to get your code into a container. Now that the industry is mostly unified on Open Container Initiative (OCI) Standard container image formats, they can be built in any number of ways.

Building via Dockerfiles is the most commonly used approach, but there are also other tools that can make it easier with less learning upfront and some other advantages.

Dockerfiles

If you’re not familiar with the specification for Dockerfiles, you can find it here. The basic layout looks something like this:

FROM debian:latest

ADD my-app-file /app/

CMD /app/my-app-file

The first thing we need is a starting point, and in this case, we’re using a debian image, and the latest version. There are also ones that are language-specific like python or golang and ones tied to specific distributions.

The next lines include whatever steps we need to prepare the image, and the last line tells the image what command to run when the image is executed. There are a lot of variations of this but these are the basics. How can we make it better? Well a real application that is a bit more complicated would make this easier. Here’s a very simple golang http server application:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func (w http. …

Read more

Developing Locally for the Cloud

Develop apps to run on the cloud right on your laptop.

David Dieruf May 21, 2020

Your app is destined for the cloud, but it’s going to meet some challenges along the way. First stop is the always fun whiteboarding session(s). Then come the sticky notes, which inevitably yield a backlog. Only when those two steps are complete does the Zen art of coding begin.

But ask yourself this: While whiteboarding the app’s design, how often is the developer’s local environment considered? Probably never. In fact, I bet during design a local environment doesn’t even make into the afterthoughts. Instead, it’s just one of those “figure it out” things.

Take, for example, the design of a microservice. Most likely it’s going to be dependent on an external configuration, like Spring Config. Ever consider how a developer is going to test on a config server locally? Do they have access to local containerization, like Docker? Or are they left to waste countless hours rigging up environment variables, only to find a totally different schema when the app is pushed to its platform?

I’ve been there and done that. It’s frustrating, wasteful, and breaks one of the most important of the 12 factors: No. 10, parity between environments. It’s also a personal favorite, and one I’ve been known to be ornery about.

The goal is not about following a good or bad design (although there’s plenty of room for bad decisions). It’s about …

Read more

A Place to Build Apps and Build Skills

Meet the VMware Tanzu Developer Center.

Bryan Friedman May 7, 2020

Developers and VMware. The pairing might not make sense to you at first. As an application developer, maybe you have only limited experience working with VMware software. It’s probably just the place where your software runs on-premises. Or it’s the thing you get access to a couple of days after putting in that infrastructure request ticket.

But make no mistake, VMware Tanzu is for you. If you are a developer working in a large enterprise, or even a small- to medium-sized business, you are now being asked to build “modern” applications or to “modernize” your existing apps. VMware Tanzu is a collection of software created expressly to help you with this application modernization effort. It brings together innovations via VMware’s acquisitions of Heptio, Bitnami, Wavefront, and Pivotal with lots of open-source DNA from projects like Kubernetes and Cloud Foundry. And don’t worry, this site isn’t about infrastructure software like vSphere or NSX. Instead, it covers the topics you need to know to write modern software: Spring, .NET, Python, RabbitMQ, Kafka, CI/CD platforms, and much more.

App modernization

So now you see how a VMware-hosted developer site can be focused on app modernization. But what exactly is meant by “app modernization”? Is it simply the latest in a long line of technology fads that just means more work for you?

It can sometimes feel like that. Change is hard, …

Read more

RSS