Topic: General Level: All
Welcome to the world of cutting-edge technology! Every bi-week, we bring you the latest and most incredible advancements in the tech industry that are sure to leave you feeling inspired and empowered.
Stay ahead of the game and be the first to know about the newest innovations shaping our world. Discover new ways to improve your daily life, become more efficient, and enjoy new experiences.
This time, we've got some exciting news to share with you!
Boosting Java startup with Class Data Sharing (CDS)
JDK21 LTS Maintenance and Support
Health checking of multiple cloud applications with Spring Cloud Gateway
Functional Style Non-reactive HTTP client for Spring - RestClient
ELK + Spring Boot - Local Configuration setup
Testcontainer Integrations for AWS S3, Kafka Producer and Consumer, MySQL and Flyway, Redis, Egress HTTP Calls
Jakarta Batch Job application setup and execution
Running tests on Hibernate with Testcontainers setup
Common Table Expressions in JPQL by Hibernate ORM
Architecting software with the C4 model
Building a CRUD application with Spring Boot and Angular
Developing with Quarkus, Microprofile and OpenTelemetry
Postman API Test Automation
Spring Cloud Function and AWS: Performance, Portability, and Productivity
Large-Scale Architecture: The Unreasonable Effectiveness of Simplicity
The Evolution of Evolutionary Architecture
Boosting Developer Productivity with the Spring CLI
Autonomous Database observability with Grafana
Empower your Spring Applications with Python Features on GraalVM
The Easy Way to Run and Scale Spring Apps on Cloud
Testing with Spring, AOT, GraalVM, and JUnit 5
From Zero to a Hundred Billion: Building Scalable Real-Time Event Processing at DoorDash
Let's Spring Forth and Stream with Apache Pulsar
Vector Similarity Search in Spring with Redis Stack
As the MVP is expanded, and as more capabilities are added, the MVA also needs to be evolved. The MVA may need to change because of new capabilities that the MVP takes on: some additional architectural decisions may need to be made, or some previous decisions may need to be reversed. The team’s work on each release is a balance between MVP and MVA work.
How can we achieve this balance? Both the MVP and the MVA include trade-offs to solving different kinds of problems. For the MVP, the problem is delivering valuable customer outcomes, while for the MVA, the problem is delivering those outcomes sustainably.
Teams must resist two temptations regarding the MVA: the first is ignoring its long-term value altogether and focusing only on quickly delivering functional product capabilities using a "throw-away" MVA. The second temptation they must resist is over-architecting the MVA to solve problems they may never encounter. This latter temptation bedevils traditional teams, who are under the illusion that they have the luxury of time, while the first temptation usually afflicts agile teams, who never seem to have enough time for the work they take on.
Rework is inevitable, but as it is more expensive than "simple" work because it includes undoing previous work, it’s worth taking time to reduce it as much as possible. This means, where possible, anticipating future rework and taking measures to make it easier when it does happen.
Modular code helps reduce rework by localizing changes and preventing them from rippling throughout the code base. Localizing dependencies on particular technologies and commercial products makes it easier to replace them later. Designing to make everything easily replaceable, as much as possible, is one way to limit rework. As with over-architecting to solve problems that never occur, developers need to look at the likelihood that a particular technology or product may need to be replaced. For example, would it be possible to port the MVA to a different commercial cloud or even move it back in-house if the system costs outweigh the benefits of the MVP? When in doubt, isolate.
Disclaimer:
This is a personal blog. Any views or opinions represented in this blog are personal and belong solely to the blog owner and do not represent those of people, institutions or organizations that the owner may or may not be associated with in a professional or personal capacity, unless explicitly stated. Any views or opinions are not intended to malign any religion, ethnic group, club, organization, company, or individual. All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. The owner will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.
Downloadable Files and ImagesAny downloadable file, including but not limited to pdfs, docs, jpegs, pngs, is provided at the user’s own risk. The owner will not be liable for any losses, injuries, or damages resulting from a corrupted or damaged file.
- Comments are welcome. However, the blog owner reserves the right to edit or delete any comments submitted to this blog without notice due to :
- Comments deemed to be spam or questionable spam.
- Comments including profanity.
- Comments containing language or concepts that could be deemed offensive.
- Comments containing hate speech, credible threats, or direct attacks on an individual or group.
The blog owner is not responsible for the content in the comments. This blog disclaimer is subject to change at any time.
Comments
Post a Comment