- عنوان کتاب: Microservices Patterns WITH EXAMPLES IN JAVA
- نویسنده: CHRIS RICHARDSON
- حوزه: میکروسرویس, جاوا
- سال انتشار: 2019
- تعداد صفحه: 522
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 7.54 مگابایت
ماهیت آن نقل قول این است که ایدهها و فناوری جدید مدتی طول میکشد تا در یک جامعه منتشر شود و به طور گسترده مورد پذیرش قرار گیرد. یک مثال خوب از انتشار آهسته ایده ها، داستان چگونگی کشف میکروسرویس ها است. در سال 2006 شروع شد، زمانی که پس از الهام گرفتن از سخنرانی یک مبشر AWS، مسیری را شروع کردم که در نهایت منجر به ایجاد Cloud Foundry اصلی شد. (تنها وجه مشترک با Cloud Foundry امروزی نام آن است.) Cloud Foundry یک پلتفرم به عنوان یک سرویس (PaaS) برای خودکارسازی استقرار برنامه های کاربردی جاوا در EC2 بود. مانند هر برنامه جاوا سازمانی دیگری که ساختهام، Cloud Foundry من یک معماری یکپارچه داشت که از یک فایل Java Web Application Archive (WAR) تشکیل شده بود. مجموعه ای متنوع و پیچیده از توابع مانند تهیه، پیکربندی، نظارت و مدیریت در یکپارچه، چالش های توسعه و عملیات را ایجاد کرد. برای مثال، نمیتوانید UI را بدون آزمایش و استقرار مجدد کل برنامه تغییر دهید. و از آنجایی که مولفه نظارت و مدیریت بر یک موتور پردازش رویداد پیچیده (CEP) متکی بود که حالت حافظه را حفظ می کرد، نمی توانستیم چندین نمونه از برنامه را اجرا کنیم! اعتراف شرمآور است، اما تنها چیزی که میتوانم بگویم این است که من یک توسعهدهنده نرمافزار هستم، و «بگذار آن کسی که گناه ندارد سنگ اول را بیندازد.» واضح است که این اپلیکیشن به سرعت معماری یکپارچه خود را پشت سر گذاشته بود، اما جایگزین آن چه بود؟ پاسخ برای مدتی در جامعه نرم افزاری در شرکت هایی مانند eBay و Amazon منتشر شده بود. به عنوان مثال، آمازون در حدود سال 2002 شروع به مهاجرت از یکپارچه کرده بود (https://plus.google.com/110981030061712822816/ posts/AaygmbzVeRq). معماری جدید یکپارچه را با مجموعهای از سرویسهای متصل به هم جایگزین کرد. خدمات متعلق به چیزی است که آمازون آن را تیمهای دو پیتزا مینامد – تیمهایی که به اندازه کافی کوچک هستند که با دو پیتزا تغذیه شوند. آمازون این معماری را برای سرعت بخشیدن به سرعت توسعه نرم افزار اتخاذ کرده بود تا این شرکت بتواند سریعتر نوآوری کند و به طور مؤثرتری رقابت کند. نتایج قابل توجه است: طبق گزارشها، آمازون هر 11.6 ثانیه تغییرات را در تولید ایجاد میکند! در اوایل سال 2010، پس از اینکه به پروژههای دیگر رفتم، سرانجام آینده معماری نرمافزار به من رسید. این زمانی بود که کتاب هنر مقیاسپذیری: معماری وب مقیاسپذیر، فرآیندها و سازمانها برای شرکت مدرن (Addison-Wesley Professional، 2009) نوشته مایکل تی فیشر و مارتین ال. ابوت را خواندم. یک ایده کلیدی در آن کتاب، مکعب مقیاس است، که همانطور که در فصل 2 توضیح داده شد، یک مدل سه بعدی برای مقیاس بندی یک برنامه کاربردی است. مقیاسبندی محور Y که توسط مکعب مقیاس تعریف میشود، یک برنامه کاربردی را به سرویسها تجزیه میکند. در گذشته، این کاملا واضح بود، اما برای من در آن زمان، این یک لحظه بود! من میتوانستم چالشهایی را که دو سال قبل با آن روبرو بودم، با معماری Cloud Foundry به عنوان مجموعهای از خدمات حل کنم! در آوریل 2012، اولین سخنرانی خود را در مورد این رویکرد معماری، به نام “تجزیه کاربردهای توسعه پذیری و مقیاس پذیری” (www.slideshare.net/chris.e .richardson/decomposing-applications-for-scalability-and-deployability-april-) ارائه کردم. 2012). در آن زمان، یک اصطلاح عمومی پذیرفته شده برای این نوع معماری وجود نداشت. من گاهی اوقات آن را معماری مدولار و چند زبانه می نامم، زیرا سرویس ها می توانند به زبان های مختلف نوشته شوند. اما در مثال دیگری از نحوه توزیع نابرابر آینده، عبارت microservice در یک کارگاه معماری نرم افزار در سال 2011 برای توصیف این نوع معماری استفاده شد (https://en.wikipedia.org/wiki/Microservices). من اولین بار با این اصطلاح روبرو شدم که شنیدم فرد جورج در Oredev 2013 سخنرانی می کند و از آن خوشم آمد! در ژانویه 2014، وبسایت https://microservices.io را برای مستندسازی الگوهای معماری و طراحی که با آنها مواجه شده بودم ایجاد کردم. سپس در مارس 2014، جیمز لوئیس و مارتین فاولر یک پست وبلاگی در مورد میکروسرویس ها منتشر کردند (https://martinfowler .com/articles/microservices.html). با رایج کردن اصطلاح میکروسرویس ها، پست وبلاگ باعث شد تا جامعه نرم افزار حول این مفهوم ادغام شود. ایده تیمهای کوچک و بدون جفت شده که به سرعت و با اطمینان در حال توسعه و ارائه ریزسرویسها هستند، به آرامی در جامعه نرمافزاری منتشر میشود. اما این احتمال وجود دارد که این تصور از آینده کاملاً با واقعیت روزانه شما متفاوت باشد. امروزه، برنامه های کاربردی سازمانی بحرانی تجاری معمولاً یکپارچه های بزرگ هستند که توسط تیم های بزرگ توسعه یافته اند. انتشار نرم افزار به ندرت اتفاق می افتد و اغلب برای همه افراد درگیر دردناک است. IT اغلب برای همگام شدن با نیازهای کسب و کار تلاش می کند. شما تعجب می کنید که چگونه می توانید معماری میکروسرویس را اتخاذ کنید.
The essence of that quote is that new ideas and technology take a while to diffuse through a community and become widely adopted. A good example of the slow diffusion of ideas is the story of how I discovered microservices. It began in 2006, when, after being inspired by a talk given by an AWS evangelist, I started down a path that ultimately led to my creating the original Cloud Foundry. (The only thing in common with today’s Cloud Foundry is the name.) Cloud Foundry was a Platform-as-a-Service (PaaS) for automating the deployment of Java applications on EC2. Like every other enterprise Java application that I’d built, my Cloud Foundry had a monolith architecture consisting of a single Java Web Application Archive (WAR) file. Bundling a diverse and complex set of functions such as provisioning, configuration, monitoring, and management into a monolith created both development and operations challenges. You couldn’t, for example, change the UI without testing and redeploying the entire application. And because the monitoring and management component relied on a Complex Event Processing (CEP) engine which maintained in-memory state we couldn’t run multiple instances of the application! That’s embarrassing to admit, but all I can say is that I am a software developer, and, “let he who is without sin cast the first stone.” Clearly, the application had quickly outgrown its monolith architecture, but what was the alternative? The answer had been out in the software community for some time at companies such as eBay and Amazon. Amazon had, for example, started to migrate away from the monolith around 2002 (https://plus.google.com/110981030061712822816/ posts/AaygmbzVeRq). The new architecture replaced the monolith with a collection of loosely coupled services. Services are owned by what Amazon calls two-pizza teams— teams small enough to be fed by two pizzas. Amazon had adopted this architecture to accelerate the rate of software development so that the company could innovate faster and compete more effectively. The results are impressive: Amazon reportedly deploys changes into production every 11.6 seconds! In early 2010, after I’d moved on to other projects, the future of software architecture finally caught up with me. That’s when I read the book The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (Addison- Wesley Professional, 2009) by Michael T. Fisher and Martin L. Abbott. A key idea in that book is the scale cube, which, as described in chapter 2, is a three-dimensional model for scaling an application. The Y-axis scaling defined by the scale cube functionally decomposes an application into services. In hindsight, this was quite obvious, but for me at the time, it was an a-ha moment! I could have solved the challenges I was facing two years earlier by architecting Cloud Foundry as a set of services! In April 2012, I gave my first talk on this architectural approach, called “Decomposing Applications of Deployability and Scalability” (www.slideshare.net/chris.e .richardson/decomposing-applications-for-scalability-and-deployability-april-2012). At the time, there wasn’t a generally accepted term for this kind of architecture. I sometimes called it modular, polyglot architecture, because the services could be written in different languages. But in another example of how the future is unevenly distributed, the term microservice was used at a software architecture workshop in 2011 to describe this kind of architecture (https://en.wikipedia.org/wiki/Microservices). I first encountered the term when I heard Fred George give a talk at Oredev 2013, and I liked it! In January 2014, I created the https://microservices.io website to document architecture and design patterns that I had encountered. Then in March 2014, James Lewis and Martin Fowler published a blog post about microservices (https://martinfowler .com/articles/microservices.html). By popularizing the term microservices, the blog post caused the software community to consolidate around the concept. The idea of small, loosely coupled teams, rapidly and reliably developing and delivering microservices is slowly diffusing through the software community. But it’s likely that this vision of the future is quite different from your daily reality. Today, businesscritical enterprise applications are typically large monoliths developed by large teams. Software releases occur infrequently and are often painful for everyone involved. IT often struggles to keep up with the needs of the business. You’re wondering how on earth you can adopt the microservice architecture.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
نظرات کاربران