DevBrainOps
110 subscribers
99 photos
5 videos
23 files
226 links
The group whose goal is to find the best approaches and solve problems of #DevOps practice.
Download Telegram
A picture is worth a thousand words: 9 best practices for developing microservices.

When we develop microservices, we need to follow the following best practices:

1. Use separate data storage for each microservice
2. Keep code at a similar level of maturity
3. Separate build for each microservice
4. Assign each microservice with a single responsibility
5. Deploy into containers
6. Design stateless services
7. Adopt domain-driven design
8. Design micro frontend
9. Orchestrating microservices

#microservices #architecture
#application
๐Ÿ‘2
Think like an architect: a mental model for designing your softwares

๐ŸWhat You'll Learn:
- How to transition your architectural knowledge to serverless
- The importance of modularity in serverless design and how to implement it
- A step-by-step example of moving from business requirements to a high-level architecture, and finally to a detailed serverless architecture

#microservices #architecture
#application #CloudComputing
#DevOps #CloudArchitect #ArchitecturePatterns
#AWSServices #CloudSolutions

๐Ÿงฉpart1
https://www.youtube.com/watch?v=9gEtY4Pb_8g

๐Ÿงฉpart2
https://www.youtube.com/watch?v=Gp_Cmv1Tams
๐Ÿ‘2
๐ŸŒฑThese tips will give you an understanding of what characteristics a reliable application should meet.

#Architecture #application #SystemsDesign

https://12factor.net/
๐Ÿ‘1๐Ÿ”ฅ1
๐Ÿฆถ๐ŸผHow do message queue architectures evolve?
๐Ÿ”น IBM MQ - was launched in 1993. It was originally called MQSeries and was renamed WebSphere MQ in 2002. It was renamed to IBM MQ in 2014. IBM MQ is a very successful product widely used in the financial sector. Its revenue still reached 1 billion dollars in 2020.

๐Ÿ”น RabbitMQ - architecture differs from IBM MQ and is more similar to Kafka concepts. The producer publishes a message to an exchange with a specified exchange type. It can be direct, topic, or fanout. The exchange then routes the message into the queues based on different message attributes and the exchange type. The consumers pick up the message accordingly.

#infrastructure #DevOps #Architecture
#application #microservices
โค1
๐Ÿ”น Kafka
In early 2011, LinkedIn open sourced Kafka, which is a distributed event streaming platform. It was named after Franz Kafka. As the name suggested, Kafka is optimized for writing. It offers a high-throughput, low-latency platform for handling real-time data feeds. It provides a unified event log to enable event streaming and is widely used in internet companies.

Kafka defines producer, broker, topic, partition, and consumer. Its simplicity and fault tolerance allow it to replace previous products like AMQP-based message queues.

๐Ÿ”น Pulsar
Pulsar, developed originally by Yahoo, is an all-in-one messaging and streaming platform. Compared with Kafka, Pulsar incorporates many useful features from other products and supports a wide range of capabilities. Also, Pulsar architecture is more cloud-native, providing better support for cluster scaling and partition migration, etc.

There are two layers in Pulsar architecture: the serving layer and the persistent layer. Pulsar natively supports tiered storage, where we can leverage cheaper object storage like AWS S3 to persist messages for a longer term.

#infrastructure #DevOps #Architecture
#application #microservices
๐Ÿ‘1๐Ÿ”ฅ1
๐Ÿ”ฅ2๐Ÿ‘1
Why gRPC is Popular ๐Ÿš€

Here's why:
๐Ÿ” Speed - gRPC is built on HTTP/2 and Protobufs for maximum throughput and minimal latency. Much faster than JSON over HTTP.
๐Ÿ” Efficiency The compact Protobuf binary format means smaller payloads than JSON. Less data sent = better performance.
๐Ÿ” Type Safety Protobufs are strongly typed, eliminating many bugs.
๐Ÿ” Polyglot Write services in many popular languages, the IDL works across them all.
๐Ÿ” Streaming gRPC supports bidirectional streaming for real-time data transmission.
๐Ÿ” Great Ecosystem Tons of tools exist for code gen, load balancing, monitoring, and more.

Of course, gRPC has some drawbacks:
๐Ÿ– More Complex Defining Protobuf schemas and setting up gRPC can have a learning curve.
๐Ÿ– Not Human Readable Protobufs are binary, so not as easy to troubleshoot as JSON. Tools like grpcurl help a little bit.
๐Ÿ– Limited Browser Support gRPC works best for backend microservices, not front-end apps.

#DevOps #Architecture #application #microservices #Architecture
๐Ÿ‘1๐Ÿ”ฅ1
AWS_Marketplace_Cloud_Native_eBook_2_Development_Techniques_FINAL.pdf
4 MB
Book: ๐Ÿ“š Development Techniques for Serverless and Kubernetes Applications

#infrastructure #aws #devops
๐Ÿ‘1๐Ÿ”ฅ1
๐Ÿง‘๐Ÿผโ€๐Ÿ’ปLeveraging Cilium in its Kubernetes platform has lowered Kakaoโ€™s network and performance costs
๐Ÿƒ๐Ÿปโ€โ™‚๏ธand enabled faster debugging of network issues.

#cloudnative #network
#kubernetes #cilium

https://www.cncf.io/case-studies/kakao/?utm_content=303207023&utm_medium=social&utm_source=linkedin&hss_channel=lcp-12893459
๐Ÿ‘2
How can Redis be used?

There is more to Redis than just caching.

Redis can be used in a variety of scenarios as shown in the diagram.

๐Ÿ”นSession
We can use Redis to share user session data among different services.
๐Ÿ”นCache
We can use Redis to cache objects or pages, especially for hotspot data.
๐Ÿ”นDistributed lock
We can use a Redis string to acquire locks among distributed services.
๐Ÿ”นCounter
We can count how many likes or how many reads for articles.
๐Ÿ”นRate limiter
We can apply a rate limiter for certain user IPs.
๐Ÿ”นGlobal ID generator
We can use Redis Int for global ID.
๐Ÿ”นShopping cart
We can use Redis Hash to represent key-value pairs in a shopping cart.
๐Ÿ”นCalculate user retention
We can use Bitmap to represent the user login daily and calculate user retention.
๐Ÿ”นMessage queue
We can use List for a message queue.
๐Ÿ”นRanking
We can use ZSet to sort the articles.

#redis #application #devops
๐Ÿ‘3
Top 10 kubernetes Design Patterns

#kubernetes #infrastructure
#systemDesign
โค3
10 Key Data Structures We Use Every Day

๐Ÿ”ธlist: keep your Twitter feeds
๐Ÿ”ธstack: support undo/redo of the word editor
๐Ÿ”ธqueue: keep printer jobs, or send user actions in-game
๐Ÿ”ธhash table: cashing systems
๐Ÿ”ธArray: math operations
๐Ÿ”ธheap: task scheduling
๐Ÿ”ธtree: keep the HTML document, or for AI decision
๐Ÿ”ธsuffix tree: for searching string in a document
๐Ÿ”ธgraph: for tracking friendship, or path finding
๐Ÿ”ธr-tree: for finding the nearest neighbor
๐Ÿ”ธ vertex buffer: for sending data to GPU for rendering

#devops #algorithms
๐Ÿ‘4
๐Ÿ“š10 books Every Software Engineer should read

#books #learning_path #devops
#software #engineering
๐Ÿ‘1
๐Ÿ‘ฅ Monolithic VS Microservices architecture

#devops #infrastructure
๐Ÿ‘3
๐Ÿ‘‰ ๐—›๐—ฒ๐—ฟ๐—ฒ'๐˜€ ๐—ฎ ๐—ฏ๐—ฟ๐—ฒ๐—ฎ๐—ธ๐—ฑ๐—ผ๐˜„๐—ป ๐—ผ๐—ณ ๐—ต๐—ผ๐˜„ ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐˜„๐—ผ๐—ฟ๐—ธ๐˜€:

โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐—ฐ๐—ผ๐—ป๐˜๐—ฎ๐—ถ๐—ป๐—ฒ๐—ฟ๐˜€ are self-contained units that package your application code, runtime, system tools, settings, and libraries
โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐—ถ๐—บ๐—ฎ๐—ด๐—ฒ๐˜€ are blueprints that contain instructions for creating containers.
โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐—ฑ๐—ฎ๐—ฒ๐—บ๐—ผ๐—ป (๐—ฑ๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ๐—ฑ) is the engine that builds, runs, and manages Docker containers.
โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐—–๐—Ÿ๐—œ is the tool you use to interact with the Docker daemon.
โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐—ฟ๐—ฒ๐—ด๐—ถ๐˜€๐˜๐—ฟ๐—ถ๐—ฒ๐˜€ are repositories that store and share Docker images.
โžก๏ธ๐——๐—ผ๐—ฐ๐—ธ๐—ฒ๐—ฟ ๐˜€๐˜๐—ผ๐—ฟ๐—ฎ๐—ด๐—ฒ ๐—ฑ๐—ฟ๐—ถ๐˜ƒ๐—ฒ๐—ฟ๐˜€ manage how data is stored and persisted within containers.
โžก๏ธ๐—–๐—ผ๐—ป๐˜๐—ฎ๐—ถ๐—ป๐—ฒ๐—ฟ ๐—ผ๐—ฟ๐—ฐ๐—ต๐—ฒ๐˜€๐˜๐—ฟ๐—ฎ๐˜๐—ผ๐—ฟ๐˜€ like Kubernetes that help you manage and scale large deployments of Docker containers. They take care of provisioning, scheduling, and healing your containers, making it easier to run complex applications in production.

#devops #docker #containers
#architecture #infrastructure
๐Ÿ‘2
โœจ7 must-know strategies to scale your database.

1๏ธโƒฃ Indexing:
Check the query patterns of your application and create the right indexes.
2๏ธโƒฃ Materialized Views:
Pre-compute complex query results and store them for faster access.
3๏ธโƒฃ Denormalization:
Reduce complex joins to improve query performance.
4๏ธโƒฃ Vertical Scaling
Boost your database server by adding more CPU, RAM, or storage.
5๏ธโƒฃ Caching
Store frequently accessed data in a faster storage layer to reduce database load.
6๏ธโƒฃ Replication
Create replicas of your primary database on different servers for scaling the reads.
7๏ธโƒฃ Sharding
Split your database tables into smaller pieces and spread them across servers. Used for scaling the writes as well as the reads.

#architecture #systemdesign #optimization #highloads #databases
๐Ÿ‘2