diff --git a/modules/module1/sections/02-introduction-to-software-architecture.md b/modules/module1/sections/02-introduction-to-software-architecture.md index b41d0f1..26f88f3 100644 --- a/modules/module1/sections/02-introduction-to-software-architecture.md +++ b/modules/module1/sections/02-introduction-to-software-architecture.md @@ -120,15 +120,8 @@ #### Примеры реализации -
-
- - - - -
- -
+
+🔧 Java (Spring Boot) ```java // Монолитная архитектура @@ -192,9 +185,11 @@ public class OrderController { } } ``` -
- -
+ + + +
+🦀 Rust (Actix Web) ```rust // Монолитная архитектура @@ -247,9 +242,11 @@ async fn create_order( Ok(web::Json(order)) } ``` -
- -
+ + + +
+🟨 JavaScript (Node.js) ```javascript // Монолитная архитектура @@ -277,9 +274,11 @@ fastify.post('/api/orders', async (request, reply) => { return order; }); ``` -
- -
+ + + +
+🐍 Python (FastAPI) ```python # Монолитная архитектура @@ -310,8 +309,8 @@ async def create_order(request: CreateOrderRequest): order = await order_service.create_order(request) return order ``` -
-
+ + ### 2. SQL vs NoSQL @@ -353,15 +352,8 @@ async def create_order(request: CreateOrderRequest): #### Примеры реализации -
-
- - - - -
- -
+
+🔧 Java (Spring Boot + JPA) ```java // SQL подход (PostgreSQL) @@ -420,9 +412,11 @@ public class MongoUser { } } ``` -
- -
+ + + +
+🦀 Rust (SQLx) ```rust // SQL подход (PostgreSQL) @@ -503,9 +497,11 @@ async fn create_user_with_order( Ok(user) } ``` -
- -
+ + + +
+🟨 JavaScript (Node.js) ```javascript // SQL подход (PostgreSQL) @@ -593,9 +589,11 @@ async function createUserWithOrderMongo(request) { return await user.save(); } ``` -
- -
+ + + +
+🐍 Python (SQLAlchemy) ```python # SQL подход (PostgreSQL) @@ -671,8 +669,8 @@ def create_user_with_order_mongo(request): user['_id'] = result.inserted_id return user ``` -
-
+ + ### 3. REST vs GraphQL @@ -713,15 +711,8 @@ def create_user_with_order_mongo(request): #### Примеры реализации -
-
- - - - -
- -
+
+🔧 Java (Spring Boot) ```java // REST API @@ -749,9 +740,11 @@ public class UserResolver implements GraphQLResolver { } } ``` -
- -
+ + + +
+🦀 Rust (Actix Web) ```rust // REST API @@ -787,9 +780,11 @@ const resolvers = { } }; ``` -
- -
+ + + +
+🟨 JavaScript (Node.js) ```javascript // REST API @@ -807,9 +802,11 @@ const resolvers = { } }; ``` -
- -
+ + + +
+🐍 Python (FastAPI + Strawberry) ```python # REST API @@ -825,8 +822,8 @@ class User: async def orders(self) -> List[Order]: return await order_service.find_by_user_id(self.id) ``` -
-
+ + ### 4. Стратегии кэширования @@ -1027,15 +1024,8 @@ class User: #### Примеры реализации -
-
- - - - -
- -
+
+🔧 Java (Spring Boot + Redis) ```java // Cache-Aside Pattern @@ -1091,9 +1081,11 @@ public class UserServiceWriteThrough { } } ``` -
- -
+ + + +
+🦀 Rust (Redis + Tokio) ```rust // Cache-Aside Pattern @@ -1151,9 +1143,11 @@ impl UserService { } } ``` -
- -
+ + + +
+🟨 JavaScript (Node.js + Redis) ```javascript // Cache-Aside Pattern @@ -1227,9 +1221,11 @@ class UserServiceWriteBehind { } } ``` -
- -
+ + + +
+🐍 Python (FastAPI + Redis) ```python # Cache-Aside Pattern @@ -1302,8 +1298,8 @@ class UserService: except Exception as e: print(f"Async save error: {e}") ``` -
-
+ + ## Рекомендации по выбору @@ -1404,86 +1400,5 @@ class UserService: > **💡 Совет**: Документируйте архитектурные решения в Architecture Decision Records (ADR) для будущих поколений разработчиков. - - -