One of the key principles of microservices architectures is to follow domain-driven design (DDD). Having said that, our governance strategy should consider the domain as a first-class citizen wherein business or domain experts should define the information model following the DDD. The business should also be able to define the business capabilities for each of the domains from the information model.
The business should be able to easily define products from existing information models and business capabilities as well as be able to define business KPIs for products. Governance should also take care of providing a holistic view of existing products, APIs, services, and actual KPIs to the business. This will help the business to align business capabilities with end customers, quickly identify new and innovative products and measure their effectiveness.
With platform-thinking, the enterprise should provide a self-service governance platform for both business as well as IT, wherein both can collaborate and align. The enterprise should be able to define global policies, standards, and guidelines through templates. Teams can build developer templates based on the tools and technologies that they have identified for their domain. The technical artifacts should be auto-generated through templates and deployed to respective run-time environments through a CI/CD pipeline, thereby automating the implementation of policies, standards, and guidelines.
- Microservices
- The Evolutionary Architect !!!
- How to Model Services !!!
- Integration
- Splitting the Monolith !!! (we have diffrent team domains)
- Deployment
- Testing
- Security
- Conway’s Law and System Design !!!
- Microservices at Scale
- Bringing It All Together
- The Evolutionary Architect !!!
- How to Model Services !!!
- Splitting the Monolith !!!
- Conway’s Law and System Design !!!
- Shared Tables
- Database View
- Database Materialized View
- Database Trigger
- Transactional Code
- ETL Tools
- Data Virtualization
- Event Sourcing
- Change Data Capture
It's an in house project onehub, providing in-depth knowledge about building microservices using spring Boot, nodejs framework and variety of tools. One of the goals, was to create a cloud agnostic solution, that you shall be able to run anywhere. Or you can reach out to tutorial from udacity . And you can visit fundamentals of computer sciences
A lot of them, covering different aspects of building distributed services, whether it comes to implementing the code, managing services discovery and load balancing, configuring logging or monitoring, and eventually deploying to the VM using Docker.
Just to name a few:
- RESTful API implementation with Spring Boot
- GrapgQL implementation with Nodejs and Apollo Server
- Consumers implementation with messaging with rabbitmq
- UI implementation with React
- Domain Driven Design fundamentals
- SQL and NoSQL databases SQL Server, mongodb
- Distributed caching with Redis
- Service Layer, n-tier
- Using RabbitMQ and Kafka as a message queue
- Dealing with asynchronous requests, Process Managers and Sagas
- Monitoring with App Metrics, Grafana, Prometheus
- Logging with Log4j, and ELK stack
- Building Docker images, managing containers, networks and registries
- Defining Docker compose stacks
- Managing your own nexus feeds
- CI & CD with build services such as Bitbucket
- Deploying services to the Linux Servers and configuring Nginx
- Orchestrating services on your VM or in the Cloud using Kubernetes
Please clone the following repositories and put them into the same working directory:
- helpdesk-organization-service
- helpdesk-authentication-service
- helpdesk-logger-service
- customer-management-service
- hermes-service
- onehub-meta-service
- helpdesk-central-logger-service
- sonitel-proxy-service
- sonitel-service
- ticket-service
- ticket-migration
- netone-ticket-consumer
- party-management-service
- party-management-migration-service
- party-role-management-service
- state-activity-service
- channel-service
- subscription-service
- subscription-migration
- product-service
- product-migration
- tn.onehub.main
- file-manager-service
- poseidon-service
- helpdesk-schedule-service
- tn.onehub.ui.task
- onehub-team-user-status-check
- turknet-service
- modular-core-sdk
$ cd scripts
$ sh git-clone-onehub.sh
$ docker-compose -f docker-compose-onehub.yaml up
$ tilt -f Tiltfile-onehub
$ sh git-clone-onehub.sh
$ tilt up -f Tiltfile-onehub
$ tilt down -f Tiltfile-onehub
you can reach out the tech stack here
- Simple design
- Automate repetitive tasks
- TDD
- CI
- SOLID
- Clean Code
- Fast Feedback
- Continuous Delivery
- Stable and repeatable release processes
PS : The art of system design is the Picking the right architecture = Picking the right battles + Managing trade-offs