nadpan erberto garlena

0 views
Skip to first unread message

Marisa Jeppesen

unread,
Aug 2, 2024, 7:19:57 PM8/2/24
to leicartpersfac

One of my resolutions for 2021 is to get more into software architecture. As an entry point for this topic, I chose fundamentals of software architecture by Mark Richards and Neal Ford. It was a great starting point and in this review, I will tell you why.

The bread and butter of this book is a middle part that describes eight architecture styles. Each one is described in enough detail but without any unnecessary clutter. Great are practical examples that point out the weaknesses and strengths of each described architecture. The architecture styles also come with a handy table that can serve as a quick overview of the strengths and weaknesses of each architecture style. We will see how quickly will this part get old but until that, it will be a go-to resource for me when doing initial research on how to approach a problem from an architectural point of view.

The book, in the first part, goes over basic architectural knowledge such as modularity, coupling, components... What was completely new for me was the introduction of formal methods of evaluating architecture characteristics. This part of the book is on my bucket list to read again in the hope to understand it better than during the first read. This part was also the hardest to read but for me, that is always a good sign of learning, so be prepared and take your time, it is worth it.

The last part of the book focuses mainly on softer parts of the architect job. There are good parts (I enjoyed the risk analysis part and Architecture decision records) but overall I had a feeling that this is something "extra". If this is what you would like to get from architecture book, look somewhere else.

The fundamentals of software architecture was a great introduction to the topic of software architecture. The technical parts are excellent with great examples. The book is worthy of your time, you get a great overview of the discipline and a great handbook for everything architecture related.

LinkedIn and 3rd parties use essential and non-essential cookies to provide, secure, analyze and improve our Services, and to show you relevant ads (including professional and job ads) on and off LinkedIn. Learn more in our Cookie Policy.

This is pretty obvious given the title, but the book is an introduction to the fundamentals of software architecture. Its intended audience is anyone interested in understanding the building blocks of software architecture and what it means to be an architect.

1) The first part focuses on the foundations of what it means to do architecture. It explains how to think like an architect, identify and understand the architectural characteristics of different architecture models, modularity, and much more.

2) The second part focuses on different architecture styles. The first chapter of this part is dedicated to explain the differences between monolithic and distributed architectures. The rest of this part of the book is focused on explaining different architecture patterns such as layered architecture, event-driven, service-based, microservices, space-based and more.

I'm still relatively young in my career working as a Software Engineer (coming up on 2 years officially). There's so much more I want to explore and understand in the realm of software, but ever since I got into this field, I always had aspirations to dive into architecture. I read this book with the intention of learning more about what it actually means to be a software architect. Also, I was hoping that it would help me better understand the systems I work with on a daily basis and see what sorts of improvements / replacements that could be made to existing patterns.

The biggest thing that stood out to me is understanding that with every solution that is architected, no matter how granular and defined, there will always be trade-offs. No architecture is perfect. Sometimes you may sacrifice one architectural characteristic like overall cost over elasticity. Other times, you may choose simplicity over scalability. As the authors explained multiple times throughout the book, it simply just depends. It depends on the business problem, the business needs, the resources like cost, time, and many other factors.

The second thing that stood out to me is how tough being an architect can be. I already had a feeling that it was no walk in the park, but the authors explain that as an architect you have tremendous pressure from most sides of the business. You need to know how to navigate the politics within the org. You have to gain the respect of developers who sometimes think they know more than you and ensure compliance with architectural decisions. You also may have internal battles within your own architect sphere where one architect may vehemently think their solution is better than yours. From my understanding on the content, a crucial part of being a successful architect is knowing how to negotiate and leverage soft skills to be collaborative with those around you.

I also enjoyed the characteristics ratings that each architectural style gets at the end of the chapters in part 2. Those ratings will definitely help to refresh the memory on the strengths and weaknesses of each architecture pattern.

Understanding the differences between scalability and elasticity was very enlightening since I've had misconceptions of what it means for a system to be actually scalable. Also, being introduced to useful concepts like coupling and connascence helped me understand how to structure my code better and separate concerns between parts of my applications.

Again, this is a wonderful book full of rich information and practical wisdom. I highly recommend it to anyone interested in learning what it means to be an architect. I think it may also prove useful to those already in architecture to possibly get exposure to some different perspectives that they may have not seen before within the field. It's also worth having the book as a reference to the different characteristics and architecture patterns that exist out there from the revered and professional authors. This is definitely a 5 out of 5 stars book for me.

Preview this course in the non-credit experience today!
Start working toward program admission and requirements right away. Work you complete in the non-credit experience will transfer to the for-credit experience when you upgrade and pay tuition. See How It Works for details.

The course is intended for individuals looking to understand the basics of software engineering as they relate to building large software systems that leverage big data. You will be introduced to software engineering concepts necessary to build and scale large, data intensive, distributed systems. Starting with software engineering best practices and loosely coupled, highly cohesive data microservices, the course takes you through the evolution of a distributed system over time.

In the realm of software engineering, code review is more than just a step in the development process; it's an indispensable practice that significantly shapes the quality and reliability of the software product. It's an opportunity to learn, grow, and contribute to the collective quality of the team's work. You, as an aspiring software engineer, are preparing to become a part of this collaborative ethos, where reviewing others' work will be as crucial as coding itself.

Remember the importance of timely peer reviews and emulate the professional environment we are striving to join. Help more learners complete this course by giving more reviews. Your active participation contributes immensely to our shared goal of learning, growing, and preparing for the dynamic world of software engineering.

In this module, you will learn the basics of modern software engineering. You will learn how our industry progresses over time, practice test driven development, and implement widely used data structures.

In this module, you will learn the fundamentals of monitoring software in production. You will learn how to create reliable background jobs, how to calculate and communicate service availability, and how to implement production metrics and monitoring.

In this module, you will learn the fundamentals of production quality databases and messaging systems. You will learn to understand the tradeoffs between consistency and availability, how to implement database transactions to improve consistency, and how to implement messaging systems to improve availability.

This module contains materials for the final project. If you've upgraded to the for-credit version of this course, please make sure you review the additional for-credit materials in the introductory module and anywhere else they may be found.

Students will complete the Peer Reviewed Assesment for the final in this module. Submit your file for review from peers and make sur eyou review your peers. Submission of your own assignement for review and reviewing your peers are both required. All peer review assignments are due 3 days before the end of the session. This deadline ensures there is enough time for your submissions to accrue all required reviews.

The scope, goals, and nature of running a business in a software as a service (SaaS) model can be difficult to define. The terminology and patterns that are used to characterize SaaS vary based on their origin. The goal of this document is to better define the fundamental elements of SaaS and create a clearer picture of patterns, terms, and value systems that are applied when designing and delivering a SaaS system on AWS. The broader goal is to provide a collection of foundational insights that provide customers with a clearer view of the options they should consider as they look to adopt a SaaS delivery model.

This paper is targeted at SaaS builders and architects who are at the beginning of their SaaS journey, as well as more seasoned builders who want to refine their understanding of core SaaS concepts. Some of this information can also be useful to SaaS product owners and strategists who want to get more familiar with the SaaS landscape.

c01484d022
Reply all
Reply to author
Forward
0 new messages