Monolith to Microservices. Evolutionary Patterns to Transform Your Monolith

- Autor:
- Sam Newman
- Promocja Przejdź


- Ocena:
- Bądź pierwszym, który oceni tę książkę
- Stron:
- 272
- Dostępne formaty:
-
ePubMobi
Opis książki: Monolith to Microservices. Evolutionary Patterns to Transform Your Monolith
How do you detangle a monolithic system and migrate it to a microservice architecture? How do you do it while maintaining business-as-usual? As a companion to Sam Newman’s extremely popular Building Microservices, this new book details a proven method for transitioning an existing monolithic system to a microservice architecture.
With many illustrative examples, insightful migration patterns, and a bevy of practical advice to transition your monolith enterprise into a microservice operation, this practical guide covers multiple scenarios and strategies for a successful migration, from initial planning all the way through application and database decomposition. You’ll learn several tried and tested patterns and techniques that you can use as you migrate your existing architecture.
- Ideal for organizations looking to transition to microservices, rather than rebuild
- Helps companies determine whether to migrate, when to migrate, and where to begin
- Addresses communication, integration, and the migration of legacy systems
- Discusses multiple migration patterns and where they apply
- Provides database migration examples, along with synchronization strategies
- Explores application decomposition, including several architectural refactoring patterns
- Delves into details of database decomposition, including the impact of breaking referential and transactional integrity, new failure modes, and more
Wybrane bestsellery
-
O tym, ile problemów sprawia niedbale napisany kod, wie każdy programista. Nie wszyscy jednak wiedzą, jak napisać ten świetny, „czysty” kod i czym właściwie powinien się on charakteryzować. Co więcej – jak odróżnić dobry kod od złego? Odpowiedź na te pytania oraz sposoby tworzen...(0,00 zł najniższa cena z 30 dni)
51.35 zł
79.00 zł(-35%) -
Branża IT kusi licznymi ofertami pracy, atrakcyjnymi zarobkami i ciekawymi ścieżkami rozwoju nie tylko zawodowych programistów, lecz również osoby bez wykształcenia informatycznego czy doświadczenia w tej dziedzinie. Te ostatnie zwykle zaczynają karierę od roli testera aplikacji. Jednym z podstaw...(0,00 zł najniższa cena z 30 dni)
57.85 zł
89.00 zł(-35%) -
Dave Thomas i Andy Hunt napisali pierwsze wydanie tej wpływowej książki w 1999 roku, aby pomóc swoim klientom tworzyć lepsze oprogramowanie i na nowo odnaleźć radość z kodowania. Nauki płynące z tamtego wydania pomogły wielu pokoleniom programistów zbadać istotę rozwoju oprogramowania, niezależni...
Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II Pragmatyczny programista. Od czeladnika do mistrza. Wydanie II
(0,00 zł najniższa cena z 30 dni)50.05 zł
77.00 zł(-35%) -
Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów Podręcznik profesjonalnego programisty! Robert C. Martin, znany jako Uncle Bob, to jeden z prawdziwych gwiazdorów branży IT, człowiek o niezwykłej charyzmie, rewelacyjnym podejściu do słuchaczy i poczuciu h...
Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów
(0,00 zł najniższa cena z 30 dni)31.85 zł
49.00 zł(-35%) -
W tej książce w sposób jasny i bardzo interesujący przedstawiono uniwersalne zasady architektury oprogramowania wraz z szeregiem wskazówek dotyczących stosowania tych reguł w praktyce. Wyczerpująco zaprezentowano tu dostępne rozwiązania i wyjaśniono, dlaczego są one tak istotne dla sukcesu przeds...
Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów Czysta architektura. Struktura i design oprogramowania. Przewodnik dla profesjonalistów
(0,00 zł najniższa cena z 30 dni)57.85 zł
89.00 zł(-35%) -
To kolejne wydanie lubianego samouczka, dzięki któremu w ramach 24 godzinnych lekcji przyswoisz solidne podstawy programowania. Zrozumiesz, jak działają programy, i nauczysz się reguł stosowanych przez profesjonalistów przy ich projektowaniu. Dowiesz się, jak wygląda świat programistów i na czym ...
Programowanie dla początkujących w 24 godziny. Wydanie IV Programowanie dla początkujących w 24 godziny. Wydanie IV
(0,00 zł najniższa cena z 30 dni)41.40 zł
69.00 zł(-40%) -
Trzech poważanych architektów oprogramowania omawia cały cykl życia, prezentując praktyczne wskazówki, metody stosowane przez ekspertów i sprawdzone modele przydatne w każdym projekcie niezależnie od poziomu jego złożoności. Dowiesz się, jak za pomocą architektury radzić sobie z coraz większymi w...
Architektura oprogramowania w praktyce. Wydanie IV Architektura oprogramowania w praktyce. Wydanie IV
(0,00 zł najniższa cena z 30 dni)64.35 zł
99.00 zł(-35%) -
To drugie wydanie bestsellerowego przewodnika po technikach uczenia maszynowego. Wystarczą minimalne umiejętności programistyczne, aby dzięki tej książce nauczyć się budowania i trenowania głębokiej sieci neuronowej. Zawarto tu minimum teorii, a proces nauki jest ułatwiony przez liczne przykłady ...
Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow. Wydanie II Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow. Wydanie II
(0,00 zł najniższa cena z 30 dni)83.85 zł
129.00 zł(-35%) -
W tej praktycznej książce dokładnie wyjaśniono współczesne podejście do tworzenia architektury baz danych i ich eksploatacji. Jeśli chcesz stać się znakomitym inżynierem niezawodności baz danych, czyli DBRE (z Database Reliability Engineer), znajdziesz tu schemat zasad i praktyk projektowania, bu...
Inżynieria niezawodnych baz danych. Projektowanie systemów odpornych na błędy Inżynieria niezawodnych baz danych. Projektowanie systemów odpornych na błędy
(0,00 zł najniższa cena z 30 dni)35.40 zł
59.00 zł(-40%) -
Tworzenie skomplikowanych systemów informatycznych wymaga nowego podejścia. Dotychczas stosowane metody przestają się sprawdzać i generują mnóstwo problemów. Odpowiedzią na nie jest Domain-Driven Design, w skrócie DDD. W tym podejściu szczególny nacisk kładzie się na tworzenie obiektów dokładnie ...
Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym Domain-Driven Design. Zapanuj nad złożonym systemem informatycznym
(0,00 zł najniższa cena z 30 dni)83.85 zł
129.00 zł(-35%)
O autorze książki
1 Sam NewmanSam Newman - jest technologiem w firmie ThoughtWorks, gdzie dzieli swój czas pomiędzy pomoc klientom z całego świata, a rolę architekta wewnętrznych systemów. Współpracował z różnymi firmami na całym świecie, zarówno w zakresie projektowania systemów, jak i innych operacji związanych z informatyką.
Sam Newman - pozostałe książki
-
To drugie wydanie praktycznego przewodnika po projektowaniu, tworzeniu, wdrażaniu, skalowaniu i utrzymaniu systemów opartych na drobnoziarnistych mikrousługach. Publikacja została uzupełniona o informacje dotyczące najnowszych trendów i technologii związanych z mikrousługami. Sporo miejsca poświę...
Budowanie mikrousług. Projektowanie drobnoziarnistych systemów. Wydanie II Budowanie mikrousług. Projektowanie drobnoziarnistych systemów. Wydanie II
(65.40 zł najniższa cena z 30 dni)70.85 zł
109.00 zł(-35%) -
As organizations shift from monolithic applications to smaller, self-contained microservices, distributed systems have become more fine-grained. But developing these new systems brings its own host of problems. This expanded second edition takes a holistic view of topics that you need to consider...(237.15 zł najniższa cena z 30 dni)
237.15 zł
279.00 zł(-15%) -
Mikrousługi są relatywnie świeżą koncepcją w świecie systemów IT, mimo to coraz więcej organizacji decyduje się na wdrażanie opartej na nich architektury. Uznaje się, że zapewnia ona wówczas lepszą skalowalność, łatwość łączenia poszczególnych niezależnych elementów, a przede wszystkim możliwość ...
Od monolitu do mikrousług. Ewolucyjne wzorce przekształcania systemów monolitycznych Od monolitu do mikrousług. Ewolucyjne wzorce przekształcania systemów monolitycznych
(32.94 zł najniższa cena z 30 dni)27.45 zł
54.90 zł(-50%) -
Technologie mikrousług szybko się rozwijają. Autor Sam Newman zaprezentował solidne podstawy w postaci opisu pojęć, a jednocześnie wskazał bieżące rozwiązania modelowania, integracji, testowania, wdrażania i monitorowania własnych, autonomicznych usług. W książce Czytelnik będzie śledzić fikcyjną...(34.50 zł najniższa cena z 30 dni)
41.40 zł
69.00 zł(-40%)
Kup polskie wydanie:
Od monolitu do mikrousług. Ewolucyjne wzorce przekształcania systemów monolitycznych
- Autor:
- Sam Newman
27,45 zł
54,90 zł
(32.94 zł najniższa cena z 30 dni)
Ebooka przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video zobaczysz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolonych urządzeniach i aplikacjach obsługujących format MP4 (pliki spakowane w ZIP)
Szczegóły książki
- ISBN Ebooka:
- 978-14-920-4779-7, 9781492047797
- Data wydania ebooka:
-
2019-11-14
Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@helion.pl.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 10.1MB
- Rozmiar pliku Mobi:
- 25.5MB
- Kategorie:
Programowanie » Techniki programowania
Spis treści książki
- Preface
- What You Will Learn
- Conventions Used in This Book
- OReilly Online Learning
- How to Contact Us
- Acknowledgments
- 1. Just Enough Microservices
- What Are Microservices?
- Independent Deployability
- Modeled Around a Business Domain
- Own Their Own Data
- What Advantages Can Microservices Bring?
- What Problems Do They Create?
- User Interfaces
- Technology
- Size
- And Ownership
- What Are Microservices?
- The Monolith
- The Single Process Monolith
- And the modular monolith
- The Single Process Monolith
- The Distributed Monolith
- Third-Party Black-Box Systems
- Challenges of Monoliths
- Advantages of Monoliths
- On Coupling and Cohesion
- Cohesion
- Coupling
- Implementation coupling
- Temporal coupling
- Deployment coupling
- Domain coupling
- Just Enough Domain-Driven Design
- Aggregate
- Bounded Context
- Mapping Aggregates and Bounded Contexts to Microservices
- Further Reading
- Summary
- 2. Planning a Migration
- Understanding the Goal
- Three Key Questions
- Understanding the Goal
- Why Might You Choose Microservices?
- Improve Team Autonomy
- How else could you do this?
- Improve Team Autonomy
- Reduce Time to Market
- How else could you do this?
- Scale Cost-Effectively for Load
- How else could you do this?
- Improve Robustness
- How else could you do this?
- Scale the Number of Developers
- How else could you do this?
- Embrace New Technology
- How else could you do this?
- When Might Microservices Be a Bad Idea?
- Unclear Domain
- Startups
- Customer-Installed and Managed Software
- Not Having a Good Reason!
- Trade-Offs
- Taking People on the Journey
- Changing Organizations
- Establishing a Sense of Urgency
- Creating the Guiding Coalition
- Developing a Vision and Strategy
- Communicating the Change Vision
- Empowering Employees for Broad-Based Action
- Generating Short-Term Wins
- Consolidating Gains and Producing More Change
- Anchoring New Approaches in the Culture
- Importance of Incremental Migration
- Its Production That Counts
- Cost of Change
- Reversible and Irreversible Decisions
- Easier Places to Experiment
- So Where Do We Start?
- Domain-Driven Design
- How Far Do You Have to Go?
- Event Storming
- Using a Domain Model for Prioritization
- A Combined Model
- Reorganizing Teams
- Shifting Structures
- Its Not One Size Fits All
- Making a Change
- Changing Skills
- How Will You Know if the Transition Is Working?
- Having Regular Checkpoints
- Quantitative Measures
- Qualitative Measures
- Avoiding the Sunk Cost Fallacy
- Being Open to New Approaches
- Summary
- 3. Splitting the Monolith
- To Change the Monolith, or Not?
- Cut, Copy, or Reimplement?
- Refactoring the Monolith
- A modular monolith?
- Incremental rewrites
- To Change the Monolith, or Not?
- Migration Patterns
- Pattern: Strangler Fig Application
- How It Works
- Where to Use It
- Example: HTTP Reverse Proxy
- Step 1: Insert proxy
- Step 2: Migrate functionality
- Step 3: Redirect calls
- Data?
- Proxy Options
- Incremental rollout
- Changing Protocols
- And service meshes
- Example: FTP
- Example: Message Interception
- Content-based routing
- Selective consumption
- Other Protocols
- Other Examples of the Strangler Fig Pattern
- Changing Behavior While Migrating Functionality
- Pattern: UI Composition
- Example: Page Composition
- Example: Widget Composition
- And mobile applications
- Example: Micro Frontends
- Where to Use It
- Pattern: Branch by Abstraction
- How It Works
- Step 1: Create abstraction
- Step 2: Use abstraction
- Step 3: Create new implementation
- Step 4: Switch implementation
- Step 5: Clean up
- How It Works
- As a Fallback Mechanism
- Where to Use It
- Pattern: Parallel Run
- Example: Comparing Credit Derivative Pricing
- Example: Homegate Listings
- Verification Techniques
- Using Spies
- GitHub Scientist
- Dark Launching and Canary Releasing
- Where to Use It
- Pattern: Decorating Collaborator
- Example: Loyalty Program
- Where to Use It
- Pattern: Change Data Capture
- Example: Issuing Loyalty Cards
- Implementing Change Data Capture
- Database triggers
- Transaction log pollers
- Batch delta copier
- Where to Use It
- Summary
- 4. Decomposing the Database
- Pattern: The Shared Database
- Coping Patterns
- Where to Use It
- Pattern: The Shared Database
- But It Cant Be Done!
- Pattern: Database View
- The Database as a Public Contract
- Views to Present
- Limitations
- Ownership
- Where to Use It
- Pattern: Database Wrapping Service
- Where to Use It
- Pattern: Database-as-a-Service Interface
- Implementing a Mapping Engine
- Compared to Views
- Where to Use It
- Transferring Ownership
- Pattern: Aggregate Exposing Monolith
- As a pathway to more services
- Where to use it
- Where to use it
- Pattern: Aggregate Exposing Monolith
- Pattern: Change Data Ownership
- Where to use it
- Data Synchronization
- Pattern: Synchronize Data in Application
- Step 1: Bulk Synchronize Data
- Step 2: Synchronize on Write, Read from Old Schema
- Step 3: Synchronize on Write, Read from New Schema
- Where to Use This Pattern
- Where to Use It
- Pattern: Tracer Write
- Data Synchronization
- Example: Orders at Square
- Creating the new service
- Synchronizing the data
- Migrating consumers
- Where to Use It
- Splitting Apart the Database
- Physical Versus Logical Database Separation
- Splitting the Database First, or the Code?
- Split the Database First
- Pattern: Repository per bounded context
- Where to use it
- Pattern: Repository per bounded context
- Pattern: Database per bounded context
- Where to use it
- Split the Database First
- Split the Code First
- Pattern: Monolith as data access layer
- Where to use it
- Pattern: Monolith as data access layer
- Pattern: Multischema storage
- Where to use it
- Split Database and Code Together
- So, Which Should I Split First?
- Schema Separation Examples
- Pattern: Split Table
- Where to Use It
- Pattern: Move Foreign-Key Relationship to Code
- Moving the Join
- Data Consistency
- Check before deletion
- Handle deletion gracefully
- Dont allow deletion
- So how should we handle deletion?
- Where to Use It
- Example: Shared Static Data
- Pattern: duplicate static reference data
- Where to use it
- Pattern: duplicate static reference data
- Pattern: Dedicated reference data schema
- Where to use it
- Pattern: Static reference data library
- Where to use it
- Pattern: Static reference data service
- Where to use it
- What would I do?
- Transactions
- ACID Transactions
- Still ACID, but Lacking Atomicity?
- Two-Phase Commits
- Distributed TransactionsJust Say No
- Sagas
- Saga Failure Modes
- Saga rollbacks
- Reordering steps to reduce rollbacks
- Mixing fail-backward and fail-forward situations
- Saga Failure Modes
- Implementing Sagas
- Orchestrated sagas
- Choreographed sagas
- Mixing styles
- Should I use choreography or orchestration?
- Sagas Versus Distributed Transactions
- Summary
- 5. Growing Pains
- More Services, More Pain
- Ownership at Scale
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Breaking Changes
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Eliminate accidental breaking changes
- Think twice before making a breaking change
- Give consumers time to migrate
- Reporting
- When Might This Problem Occur?
- Potential Solutions
- Monitoring and Troubleshooting
- When Might These Problems Occur?
- How Can These Problems Occur?
- Potential Solutions
- Log aggregation
- Tracing
- Test in production
- Toward observability
- Local Developer Experience
- How Can This Problem Show Itself?
- When Might This Occur?
- Potential Solutions
- Running Too Many Things
- How Might This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- End-to-End Testing
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Limit scope of functional automated tests
- Use consumer-driven contracts
- Use automated release remediation and progressive delivery
- Continually refine your quality feedback cycles
- Global Versus Local Optimization
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Robustness and Resiliency
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Orphaned Services
- How Can This Problem Show Itself?
- When Might This Problem Occur?
- Potential Solutions
- Summary
- 6. Closing Words
- A. Bibliography
- B. Pattern Index
- Index
O'Reilly Media - inne książki
-
FinOps brings financial accountability to the variable spend model of cloud. Used by the majority of global enterprises, this management practice has grown from a fringe activity to the de facto discipline managing cloud spend. In this book, authors J.R. Storment and Mike Fuller outline the proce...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Edge AI is transforming the way computers interact with the real world, allowing IoT devices to make decisions using the 99% of sensor data that was previously discarded due to cost, bandwidth, or power limitations. With techniques like embedded machine learning, developers can capture human intu...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Why is it difficult for so many companies to get digital identity right? If you're still wrestling with even simple identity problems like modern website authentication, this practical book has the answers you need. Author Phil Windley provides conceptual frameworks to help you make sense of all ...(0,00 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
Python was recently ranked as today's most popular programming language on the TIOBE index, thanks to its broad applicability to design and prototyping to testing, deployment, and maintenance. With this updated fourth edition, you'll learn how to get the most out of Python, whether you're a profe...(0,00 zł najniższa cena z 30 dni)
296.65 zł
349.00 zł(-15%) -
With the accelerating speed of business and the increasing dependence on technology, companies today are significantly changing the way they build in-house business solutions. Many now use low-code and no code technologies to help them deal with specific issues, but that's just the beginning. Wit...
Building Solutions with the Microsoft Power Platform Building Solutions with the Microsoft Power Platform
(0,00 zł najniższa cena z 30 dni)262.65 zł
309.00 zł(-15%) -
Companies are scrambling to integrate AI into their systems and operations. But to build truly successful solutions, you need a firm grasp of the underlying mathematics. This accessible guide walks you through the math necessary to thrive in the AI field such as focusing on real-world application...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
DevOps engineers, developers, and security engineers have ever-changing roles to play in today's cloud native world. In order to build secure and resilient applications, you have to be equipped with security knowledge. Enter security as code.In this book, authors BK Sarthak Das and Virginia Chu d...(0,00 zł najniższa cena z 30 dni)
186.15 zł
219.00 zł(-15%) -
With the increasing use of AI in high-stakes domains such as medicine, law, and defense, organizations spend a lot of time and money to make ML models trustworthy. Many books on the subject offer deep dives into theories and concepts. This guide provides a practical starting point to help develop...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Why are so many companies adopting GitOps for their DevOps and cloud native strategy? This reliable framework is quickly becoming the standard method for deploying apps to Kubernetes. With this practical, developer-oriented book, DevOps engineers, developers, IT architects, and SREs will learn th...(0,00 zł najniższa cena z 30 dni)
262.65 zł
309.00 zł(-15%) -
Learn the essentials of working with Flutter and Dart to build full stack applications that meet the needs of a cloud-driven world. Together, the Flutter open source UI software development kit and the Dart programming language for client development provide a unified solution to building applica...(0,00 zł najniższa cena z 30 dni)
220.15 zł
259.00 zł(-15%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
W przypadku usługi "Druk na żądanie" termin dostarczenia przesyłki może obejmować także czas potrzebny na dodruk (do 10 dni roboczych)
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.


Oceny i opinie klientów: Monolith to Microservices. Evolutionary Patterns to Transform Your Monolith Sam Newman (0)
Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.