JavaRush/ΠšΡƒΡ€ΡΡ‹/ΠœΠΎΠ΄ΡƒΠ»ΡŒ 5. Spring/ЛСкция 126: Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Spring Cloud Config с микросСрвиса...

ЛСкция 126: Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Spring Cloud Config с микросСрвисами

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΊΡƒΡ‡Ρƒ микросСрвисов, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ сСрвис ΠΈΠΌΠ΅Π΅Ρ‚ свои собствСнныС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹. Один ΠΈΠ· сСрвисов ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 8081, Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис общаСтся с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π»ΠΎΠ³ΠΎΠ². И Ρ‚ΡƒΡ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ запрос ΠΎΡ‚ вашСй DevOps-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: "Π­ΠΉ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚ API, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Elasticsearch. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ это!"

Π‘Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ сСрвису ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ? Ну ΡƒΠΆ Π½Π΅Ρ‚! Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅Π³Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° дискСтС вмСсто использования Git'Π° Π² 2025 Π³ΠΎΠ΄Ρƒ. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Config Server позволяСт:

  1. ΠžΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ: измСнСния Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ автоматичСски для всСх сСрвисов.
  2. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ настроСк: всС сСрвисы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.
  3. Π£ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: сСкрСты ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ бСзопасно Π² Ρ‚Π°ΠΊΠΈΡ… инструмСнтах, ΠΊΠ°ΠΊ HashiCorp Vault, ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Config Server.
  4. ДинамичСски ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π° Π»Π΅Ρ‚Ρƒ (ΠΎ Π΄Π°, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ пСрСзапуска!).

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Config Server с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ микросСрвис ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ· Config Server, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ настроСн ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ зависимости Spring Cloud Starter Config, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ автоматичСски ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ сСрвис с Config Server ΠΈ "ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ" настройки.


1. Настройка Maven

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ зависимости Π² pom.xml нашСго микросСрвиса:

<dependencies>
    <!-- Основная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Spring Cloud Config -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
</dependencies>

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ bootstrap.properties (ΠΈΠ»ΠΈ bootstrap.yml) ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Config Server. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅: Π² Spring ΠΌΠΈΡ€ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ устроСн Π½Π° "ΠΌΠ°Π³ΠΈΠΈ", ΠΈ bootstrap Ρ„Π°ΠΉΠ»Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ.


2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ Config Server

Π’ bootstrap.yml ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ настройки для сСрвСра ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ:

spring:
  application:
    name: my-awesome-service # Имя вашСго микросСрвиса
  cloud:
    config:
      uri: http://localhost:8888 # АдрСс Config Server
      fail-fast: true            # Если сСрвСр нСдоступСн, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сразу ΡƒΠΏΠ°Π΄Π΅Ρ‚
  • application.name: это Π²Π°ΠΆΠ½ΠΎ! Config Server Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, my-awesome-service.properties ΠΈΠ»ΠΈ my-awesome-service.yml) Π² своСм Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.
  • spring.cloud.config.uri: ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° адрСс Config Server.
  • fail-fast: true: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ "ΠΏΠ°Π½ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ", Ссли Config Server нСдоступСн. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° сСрвСр снова станСт доступСн, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ запуск.

3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ПослС настройки ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° запуститС микросСрвис. Если всё настроСно Π²Π΅Ρ€Π½ΠΎ, ΠΎΠ½ подтянСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с Config Server. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π»ΠΎΠ³ΠΈ:

Fetching config from server at: http://localhost:8888
Located environment: name=my-awesome-service, profiles=[default], label=master

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ! Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, создайтС REST-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· вашСго ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°:

@RestController
public class ConfigTestController {

    @Value("${custom.property}")
    private String customProperty;

    @GetMapping("/config")
    public String getConfigProperty() {
        return "Value of custom.property: " + customProperty;
    }
}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ваш my-awesome-service.yml Π½Π° Config Server ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

custom:
  property: Hello from Config Server!

ЗапуститС микросСрвис ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://localhost:8080/config. Если всё настроСно ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ:

Value of custom.property: Hello from Config Server!

ДинамичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ

ОкСй, ΠΌΡ‹ настроили Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ. Но Ρ‡Ρ‚ΠΎ, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ динамичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Π³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ "ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ всё"? НСт, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм это красиво.


1. ДобавляСм Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Spring Boot Actuator

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ваш pom.xml ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Spring Boot Actuator добавляСт ΠΌΠΎΡ‰Π½Ρ‹Π΅ эндпоинты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ управлСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.


2. ОбновляСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π° Π»Π΅Ρ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @RefreshScope

Π§Ρ‚ΠΎΠ±Ρ‹ обновлСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ Π±Π΅Π· пСрСзапуска, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ @RefreshScope. Она "ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚" Π±ΠΈΠ½Ρ‹, Ссли конфигурация обновилась.

Обновим наш ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:

@RestController
@RefreshScope
public class ConfigTestController {

    @Value("${custom.property}")
    private String customProperty;

    @GetMapping("/config")
    public String getConfigProperty() {
        return "Value of custom.property: " + customProperty;
    }
}

3. Π’Ρ‹Π·ΠΎΠ² обновлСния Ρ‡Π΅Ρ€Π΅Π· Actuator

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, дСлая POST-запрос ΠΊ /actuator/refresh:

curl -X POST http://localhost:8080/actuator/refresh

ПослС этого ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ значСния Π±ΡƒΠ΄ΡƒΡ‚ динамичСски ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ пСрСзапуска.


4. ΠšΠΎΠ½ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ: Spring Cloud Bus

Для автоматичСской рассылки ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ всСм ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Spring Cloud Bus. Π­Ρ‚ΠΎΡ‚ инструмСнт позволяСт Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ события измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ микросСрвисами Ρ‡Π΅Ρ€Π΅Π· Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ сообщСний Ρ‚ΠΈΠΏΠ° RabbitMQ ΠΈΠ»ΠΈ Kafka.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ настройки RabbitMQ:

spring:
  cloud:
    bus:
      enabled: true
    stream:
      bindings:
        input:
          destination: springCloudBus
        output:
          destination: springCloudBus
      rabbit:
        binder:
          environment:
            spring:
              rabbitmq:
                host: localhost
                port: 5672

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ вСрсиями ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ

Никто Π½Π΅ застрахован ΠΎΡ‚ ошибок Π² конфигурациях (Π΄Π°, ΠΈ Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅). Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вСрсиями ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Git ΠΊΠ°ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚ΠΎΠ², истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ. НапримСр, для тСстовой срСды ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ dev, Π° для ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½Π° β€” master.
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ spring.cloud.config.label Π² bootstrap.yml для указания Π²Π΅Ρ‚ΠΊΠΈ:
spring:
  cloud:
    config:
      label: dev

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°

ΠŸΠ»ΡŽΡΡ‹:

  1. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ конфигурациями.
  2. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ динамичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π½Π° Π»Π΅Ρ‚Ρƒ.
  3. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Π±Ρ€ΠΎΠΊΠ΅Ρ€Π°ΠΌΠΈ сообщСний Ρ‡Π΅Ρ€Π΅Π· Spring Cloud Bus.
  4. ВСрсионированиС Ρ‡Π΅Ρ€Π΅Π· Git.

ΠœΠΈΠ½ΡƒΡΡ‹:

  1. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Config Server (Ссли ΠΎΠ½ ΡƒΠΏΠ°Π΄Π΅Ρ‚, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹).
  2. УслоТнСниС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (Π½ΠΎ Π±Π΅Π· Π½Π΅Π³ΠΎ Π² микросСрвисной систСмС Π½ΠΈΠΊΠ°ΠΊ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Spring Cloud Config с вашими микросСрвисами, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ настройки Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ, динамичСски ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… пСрСзапусков. Π”Π°Π»ΡŒΡˆΠ΅ вас ΠΆΠ΄Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ HashiCorp Vault!

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
Π£ этой страницы Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ коммСнтария