Cloud Native Applications with Jakarta EE: Build, Design, and Deploy Cloud-Native Applications and Microservices with Jakarta EE - podcast episode cover

Cloud Native Applications with Jakarta EE: Build, Design, and Deploy Cloud-Native Applications and Microservices with Jakarta EE

Nov 14, 202516 min
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Focuses on building, designing, and deploying cloud-native applications and microservices. The book covers foundational concepts like cloud computing basics, major cloud providers (AWS, Azure, Google Cloud), and cloud-native design principles, including the shift from monolithic to microservices architecture. Significant attention is paid to Jakarta EE for application development, coupled with essential practices such as testing methodologies (unit, integration, end-to-end), Continuous Integration and Continuous Delivery (CI/CD), and security and scalability considerations. Later chapters introduce advanced topics like containers (Docker and Kubernetes) and serverless computing (FaaS), and discuss cloud-native design patterns for robust system development.

You can listen and download our episodes for free on more than 10 different platforms:
https://linktr.ee/cyber_security_summary

Get the Book now from Amazon:
https://www.amazon.com/Cloud-Native-Applications-Jakarta-Microservices-ebook/dp/B093D2QMF8?&linkCode=ll1&tag=cvthunderx-20&linkId=fcf342796c7f435e382fb62fcc032ca9&language=en_US&ref_=as_li_ss_tl

Discover our free courses in tech and cybersecurity, Start learning today:
https://linktr.ee/cybercode_academy

Transcript

Speaker 1

Welcome to the deep dive. Now you gave us a really interesting stack of sources, this time a blueprint really for modern enterprise tech. And our mission today is, well, let's cut through the jargon. We want to make you instantly well informed about cloud native application development. This isn't about just dry definitions. It's about understanding the core ideas, the philosophy, and the tools that really change software.

Speaker 2

Development, fundamentally changed it.

Speaker 1

We're talking about that shift, you know, from apps that took months, maybe years to roll out, oh, to systems that demand new features in well days.

Speaker 2

And that need for speed, for constant evolution. That's the core driver here. If you look at the sources, the big move is crystal clear. It's leaving behind the monolithic architecture monoliths.

Speaker 1

We all remember that latency pain, don't we These massive applications built as just one single giant unit, indivisible. They were hard to scale. We know that, But what was the real headache, the biggest pain point organizationally? Maybe?

Speaker 2

Well, yeah, scaling was tough. If one tiny part like search on an e commerce site got hammered with traffic, right, you had to clone the entire huge application, massive resource waste. But honestly, maybe worse was deployment. Developer fixes one tiny bug deep in some module. They couldn't just deplay that fix.

Speaker 1

Oh no, you had to test everything.

Speaker 2

Everything, full regression testing on the whole beast. So releases were slow, risky, took weeks sometimes to coordinate.

Speaker 1

Okay, So micro services come in to fix that, breaking the ab down into the smallest logical level loosely coupled services.

Speaker 2

The key advantage is that granular control selective scaling. Search service overloaded find just scale that not the whole thing. The order service accounts. Yeah, they just sit there doing their job. And there's another cool benefit. The sources highlight polyglot.

Speaker 1

Programming, meaning using different languages.

Speaker 2

Right, use the best tool for the specific job. Maybe Python for I don't know, a reporting micro service because this data libraries are great, but use Java for your high performance transaction service. Get that flexibility.

Speaker 1

So the tech enables breaking things up. But let's be honest, this whole shift wouldn't have happened without the money side changing too.

Speaker 3

Right, That pay as you go model, Oh absolutely, that's the economic engine that really drove cloud adoption, paying only for what you actually use and what's really interesting is how it lowered the barrier to just trying things out, experimentation. How so, well, think back if you needed a powerful server just to say, run some sample code and validy fixes. Yeah, you had to buy the hardware first, a big capital expense.

Now you rent a virtual machine, maybe a quad core, use it for twenty minutes, shut.

Speaker 4

It down, and pay for twenty minutes exactly.

Speaker 2

Just the time you use it. Completely changes the economics of development and testing.

Speaker 1

That ability to just grab resources when needed it must have slash overheads. Okay, so we know why the shift happened. Let's talk about where the cloud environment itself. The sources use this great layer by layer metaphor for the Zauce categories ISS PIASAUCE. It gets confusing. So where does my responsibility end and the cloud providers begin?

Speaker 2

Right? This hierarchy is key because it defines your cost, your effort, and how much control you have. Let's start at the bottom. Traditional on premise. Ok. Here you manage everything the building, the power, the cooling, the servers, the network, the OS, middleware, the app, the data, all of it. Your problem.

Speaker 1

Total control, total responsibility. So climbing one step up, ISS infrastructure as a service.

Speaker 2

What changes with is think is something like an aws EC two instance, a basic virtual machine. The cloud provider handles the fundamental infrastructure, the servers, storage, networking, the physical stuff. But I still manage You're still responsible for the operating system, any middleware, the runtime environment, your application and your data. Still quite a bit look after.

Speaker 1

Okay, so PASS platform as a service must take more off my clate.

Speaker 2

Then it does significantly more with pass. The cloud provider manages the OS, the middleware, and the runtime environments. Ah So, as the user, you really only need to focus on your application code and its associated data. I think Amazon Elastic Beanstock. You just upload your.

Speaker 1

Code and the platform handles the rest, provisioning, scaling pretty much.

Speaker 2

Yeah. It abstracts away a lot of the operational burden.

Speaker 1

And then sas software is as a service is just the finished product, like logging into Gmail or Office three sixty five.

Speaker 2

Exactly, you're purely a consumer, log in, use the software. The provider handles everything else.

Speaker 1

But the cloud didn't stop there, did it. There's face functions as a service.

Speaker 2

Right, face like AWS LANDA or Azure functions. This is like the ultimate level of abstraction. The smallest unit.

Speaker 1

Your smallest unit.

Speaker 2

Yeah, you only manage the function itself, the actual snippet of code. The cloud handles everything else, provisioning servers, scaling up, scaling down, even scaling to zero when it's not being used, and the billing reflects that precisely. Your charge only for the exact time your code is running. If it runs for say, thirty milliseconds, you pay for thirty milliseconds. That efficiency is just game changing.

Speaker 1

Okay, that clarifies the layers the what. But here's the crucial part. The mindset shift. Just lifting and shifting your old monolith onto an IASVM. That doesn't really unlock the cloud's power, does it not at all?

Speaker 2

That's just running your old problems in a new location.

Speaker 1

Right. The sources really stress this. Building true cloud native apps means unlearning old habits. You have to design for well.

Speaker 4

Volatility absolutely.

Speaker 2

Cloud native design assumes failure is normal. The old monolith mindset was, you know, the server's precious, keep it running at all costs. In the cloud, servers are cattle nut pets. They're disposable. Components will fail.

Speaker 1

Which brings us right to design factor one, embrace failure. Specifically, no single point of failure.

Speaker 2

Correct, and the cornerstone of building resilient systems like this is statelessness.

Speaker 1

Okay, statelessness? What does that mean in practice? Give us an analogy.

Speaker 2

Okay, think about ordering food. Right, a stateful restaurant, only the waiter who took your order knows what you ordered or where you are in your meal. If that specific waiter goes home, you're stuck. Your state is lost with them, right, I.

Speaker 1

Can see that annoying.

Speaker 2

Very Now a stateless restaurant, your order is written down, maybe put into a central system. Any available waiter, any server instance can look up your order details and continues serving you seamlessly.

Speaker 1

Ah, The system knows, not the individual server exactly.

Speaker 2

The service itself doesn't hold onto session memory between requests the state. The data is stored elsewhere, maybe a database or cash accessible to all instances. That's what lets you easily add a remove server's horizontal scaling. You can have one hundred identical interchangeable servers.

Speaker 1

That makes total sense. Okay, So failure is inevitable. The system needs to not just survive it, but handle it gracefully.

Speaker 2

Yeah, yes, fail fast, that's crucial, often done using the circuit breaker pattern.

Speaker 1

Circuit breaker like in my house sort of.

Speaker 2

You don't want a struggling service to just hang silent feeling for minutes, causing backups everywhere else. If a downstream service is clearly having trouble, got it off exactly, the circuit breaker trips. It stops sending requests that failing service for a short period, preventing overload and giving it a chance to recover or be replaced. Then importantly, the calling service needs to handle that failure gracefully, meaning don't just

show an error page. If live searches down, maybe pull results from a cash or show top selling products, something useful, not just a dead end.

Speaker 1

Okay, resilience is built on statelessness and failing fast. But if we have potentially hundreds of these small services, managing that manually sounds impossible, which leads to design factor two.

Speaker 4

Automation is king absolutely non negotiable.

Speaker 2

With potentially hundreds of micro services, manual management is a recipe for disaster. You must automate testing, deployment, that's your CICD pipeline.

Speaker 1

And monitoring to eliminate human error, that and just.

Speaker 2

To cope with the scale. This automation is also key to building a self healing system self healing like Wolverine. Huh, Well, maybe not quite that fast, but the system needs to automatically detect and recover from failures without needing a human to step in. That could mean Kubernetes automatically restarting a failed container instance.

Speaker 1

Or redirecting traffic.

Speaker 2

Or spinning up more instances at the load increases the system manages itself.

Speaker 1

Ideally, and for developers actually building these things. The sources kept mentioning the twelve factor app philosophy is that like a checklist, it's more.

Speaker 2

Set of principles. Yeah. A widely accepted guide for building robust, scalable services for the cloud. It covers things like how to handle configuration, logs, dependencies.

Speaker 1

What's a key benefit of following those rules?

Speaker 2

Standardization and predictability. Take configuration for example, Factor three says stork and figure in the environment, not in the code.

Speaker 1

Why is that so important?

Speaker 2

Because then the exact same compiled code artifact can be deployed unchanged across development, test, staging, production. You just change the environment variables for database connections, apikeys, et cetera. It makes deployments much faster and safer, eliminates a huge source of errors.

Speaker 1

Got it? Okay, so we have the design mindset, embrace failure, automate everything. Now let's connect that to the toolkit. What technologies actually make this happen? How do we deploy and run these things?

Speaker 2

Right? The implementation, It really starts with containers. We mentioned VM's being heavy.

Speaker 1

Because they include a full OS.

Speaker 2

Right, containers are way lighter. They allow for much greater density.

Speaker 1

Remind us why they're lighter again, what's the core difference?

Speaker 2

They share the host operating system's kernel, so instead of each app needing its own complete OS like a VM does.

Speaker 1

Like separate cars with engines, Yeah.

Speaker 2

Containers are more like everyone sharing the car's engine, the host to S kernel, but each having their own secure passenger cabin built around. You're just packaging the application and its dependencies, not the whole OS stack.

Speaker 1

So you can pack way more onto the same hardware, more efficient, faster.

Speaker 2

To start up, exactly, huge boost and agility. But then if you've got tens, maybe hundreds or thousands of these containers, you need management, air traffic control.

Speaker 1

Basically, and that's Kubernetes.

Speaker 2

That's Kubernetes, or k eights as it's often called It's become the de facto standard for container orchestration orchestration, meaning it automates the deployment, scaling, load balancing, and crucially, the healing of containerized applications across a cluster of machines. If a container running your service crashes.

Speaker 1

Kates, notices and starts a new one.

Speaker 2

Yep, automatically, it handles that complexity so developers can focus on code, not infrastructure babysitting.

Speaker 1

Okay, containers managed by KAS We mentioned speed earlier that comes from continuous integration and continuous delivery CICD Right.

Speaker 2

CICD pipelines ensure that your code is constantly being built, tested and made ready for deployment. This enables those frequent, small, low risk releases we talked about instead of massive, scary deployments once a quarter.

Speaker 1

You deploy small changes, maybe multiple times a day.

Speaker 2

That's the goal. But how do you make sure the underlying infrastructure, the Kubernetes cluster itself, the networking, the databases is set up correctly and consistently every single time?

Speaker 1

Good question. Manual setup seems error prone.

Speaker 2

Highly error prone. That's where infrastructure as code or IAC is absolutely viable.

Speaker 1

Infrastructure as code yeah.

Speaker 2

Instead of clicking around in a cloud provider's web console to set things up, which is slow and impossible to replicate perfectly, you write.

Speaker 1

Scripts scripts that define the infrastructure.

Speaker 2

Exactly, using tools like AWS cloud Formation as your ARM templates or Terraform. These scripts define your servers, networks, load balancers, everything. You check this code in diversion control just like your application code.

Speaker 1

Ah. So it's repeatable, auditable, and testable.

Speaker 2

You can spin up an entire identical environment for development, testing, or production just by running the script. It eliminates configuration drift and the classic well it worked on my machine problem?

Speaker 1

Okay, that consistency is key. Now we have hundreds of services automated deployment. How do we avoid the pay as you go model becoming pay way too much? How do we manage costs and spot problems?

Speaker 2

That comes down to proactive monitoring and alerting. It's not optional, it's essential.

Speaker 1

Not just for finding bugs.

Speaker 2

No, it's critical for cost management too. You need visibility into how all these services are behaving. Our resources being underutilized, that's wasted money. Are they being overutilized that risks, performance issues are failures.

Speaker 1

So you need centralized logging and metrics absolutely.

Speaker 2

Tools like AWS, cloud Watch or open source stacks like the ELK stack, Elastic Search, log Stash, Cubana are common. They gather logs and metrics from all your micro services into one.

Speaker 4

Place so you can see the whole picture and set up.

Speaker 2

Alerts for anomalies, errors, high latency, unused resource consumption so you can react before it impacts users or your bill.

Speaker 1

Makes sense. One last piece security Moving from one big monolith to hundreds of distributed services must change the security game completely.

Speaker 2

It absolutely does. You can't just put a big firewall or on the monolith anymore. Cloud data security relies heavily on two things. Fine grained access control and network segmentation.

Speaker 1

Okay, break those down.

Speaker 2

Role based access control or RBAC IM and AWS is about who can do what principle of least privilege. Users or even services themselves only get the absolute minimum permissions they need to function. No more generic admin keys floating around.

Speaker 1

And network segmentation that's about.

Speaker 2

Controlling what can talk to what You use virtual networks, subnets, security groups essentially internal firewalls to isolate services. The Bayman service should only be allowed to talk to the specific database that needs and maybe the order service, it shouldn't be able to reach the user profile service, for.

Speaker 1

Example, inintaining the blast radius. If something gets compromised.

Speaker 2

Exactly zero, trust principles become much more important.

Speaker 1

Wow. Okay, so looking back, it's quite a journey. We went from the monolithic bottleneck to these nimble micro services. We navigated the ZIAS models, the pay as you go economics, and critically adopted this design mindset focused on resilience, statelessness, automation, assuming failure.

Speaker 2

And I think the biggest takeaway really, the thing that should guide anyone starting this journey or refining it, is that proactive planning right at the design phase. That's what saves you those thousands of dollars and man hours down the line.

Speaker 1

You can't just tack this stuff on later.

Speaker 2

No, you really can't. Trying to retrofit cloud native ideas onto an old monolithic design, it's usually painful and often fails. You have to build it in from day.

Speaker 1

One, right, which brings us nicely to our final thought for you, the listener to ponder, We talked a lot about designing for failure, and the sources mentioned this powerful concept, the bulkhead pattern.

Speaker 4

Ah Yes, ship analogy exactly.

Speaker 1

A bulkhead is that watertight wall inside a ship's hull. If there's a leak or a fire in one compartment.

Speaker 2

The bulkhead contains it. It stops the disaster from spreading and sinking the whole ship. The rest of the vessel stays operational.

Speaker 1

So the question for you is where in your business, in your systems, in your organization can you deliberately apply that bulkhead pattern.

Speaker 2

If one part fails, a key service, a critical process, maybe even a team. Have you built the walls, Have you designed the isolation points, the statelessness, the network segmentation, the circuit breakers, the automation to ensure that failure is contained.

Speaker 1

So that the core mission, the essential operations, can continue moving forward even when something inevitably breaks.

Speaker 2

That's the challenge thinking about resilience, not just in code, but across the whole system.

Speaker 1

Definitely something to mull over as you apply these cloud native concepts. Thank you for joining us for this deep dive.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android