Software Architecture with Kotlin

by Jason Chow

Software Development

Book Details

Book Title

Software Architecture with Kotlin

Author

Jason Chow

Publisher

Packt Publishing

Publication Date

2024

ISBN

9781835461860

Number of Pages

462

Language

English

Format

PDF

File Size

5.2MB

Subject

kotlin-architecture

Table of Contents

  • Cover
  • Title Page
  • Copyright
  • Dedication
  • Contributors
  • Table of Contents
  • Preface
  • Chapter 1: The Essence of Software Architecture
  • The importance of software architecture
  • The role of a software architect
  • Conway’s law
  • Choosing a software framework
  • Documentation and diagrams
  • Summary
  • Chapter 2: Principles of Software Architecture
  • Technical requirements
  • Perspectives, dimensions, and qualities
  • Separation of concerns, cohesiveness, and coupling
  • SOLID principles
  • The Law of Demeter
  • YAGNI and future-proof architecture
  • Summary
  • Chapter 3: Polymorphism and Alternatives
  • Technical requirements
  • Why Kotlin?
  • Real-life example – revisited
  • Polymorphic solution
  • Sealed class solution
  • Delegation solution
  • Functional solution
  • Comparing all the solutions
  • Summary
  • Chapter 4: Peer-to-Peer and Client-Server Architectures
  • Technical requirements
  • A real-life example of a networked system
  • Client-server architecture
  • P2P architecture
  • Comparison between client-server and P2P architectures
  • Summary
  • Chapter 5: Exploring MVC, MVP, and MVVM
  • Technical requirements
  • MVC
  • A real-life example of MVC
  • MVP
  • MVVM
  • Comparing MVC, MVP, and MVVM
  • Beyond MVC, MVP, and MVVM
  • Summary
  • Chapter 6: Microservices, Serverless, and Microfrontends
  • Technical requirements
  • Monoliths
  • Microservices
  • Nanoservices
  • Serverless
  • Microfrontends
  • An overall perspective
  • Summary
  • Chapter 7: Modular and Layered Architectures
  • Technical requirements
  • Clean Architecture
  • Hexagonal architecture
  • Functional core, imperative shell
  • The Connect pattern
  • Comparisons of architectural styles
  • When to use which architectural style
  • In relation to the anemic domain model
  • Organizing source code as layers
  • Summary
  • Chapter 8: Domain-Driven Design (DDD)
  • Technical requirements
  • Fundamentals of DDD
  • DDD – strategic design
  • DDD – tactical design
  • Modeling activities for DDD
  • Summary
  • Chapter 9: Event Sourcing and CQRS
  • Technical requirements
  • Event Sourcing
  • Command-Query Responsibility Segregation (CQRS)
  • Combining CQRS and Event Sourcing
  • Popular frameworks and infrastructure for CQRS and Event Sourcing
  • Summary
  • Chapter 10: Idempotency, Replication, and Recovery Models
  • Technical requirements
  • Idempotency
  • Replication
  • Recovery
  • Summary
  • Chapter 11: Auditing and Monitoring Models
  • Technical requirements
  • The importance of auditing and monitoring
  • The challenges of distributed system auditing and monitoring
  • Capturing the appropriate data
  • Audit trails
  • Centralizing and aggregating data
  • Summary
  • Chapter 12: Performance and Scalability
  • Technical requirements
  • Dimensions of performance and scalability
  • Optimize performance now or later?
  • An example of basic performance measurement
  • Performance tests
  • Planning a performance test
  • Micro-benchmarking
  • Application profiling
  • Strategies for performance improvement
  • Ultra-low latency systems
  • Summary
  • Chapter 13: Testing
  • Technical requirements
  • The role of QA and software testers
  • QA’s involvement in the software development life cycle
  • Testing pyramid
  • TDD
  • BDD
  • Live testing, A/B testing, and segmentation
  • Summary
  • Chapter 14: Security
  • Technical requirements
  • The importance of security in software architecture
  • The CIA triad
  • Authentication
  • Authorization
  • Handling sensitive data
  • Network security
  • DevSecOps
  • Summary
  • Chapter 15: Beyond Architecture
  • Technical requirements
  • Powered by Kotlin
  • Transitioning from Java
  • Continuous integration and delivery
  • Developer experience
  • Final thoughts on software architecture
  • Summary
  • Index
  • About PACKT
  • Other Books You May Enjoy