Рубрики
Без рубрики

Создание микросервисов с использованием Spring Boot + Harper DB и развертывание их на AWS

Введение В этой статье вы узнаете, как использовать Spring Boot и Harper DB для создания… Помечено как java, база данных, aws, учебник.

Вступление

В этой статье вы узнаете, как использовать Spring Boot и HarperDB для создания микросервиса. Позже вы также рассмотрите, как развернуть полное приложение на AWS Elastic Beanstalk

Вы будете создавать Систему управления отпусками сотрудников . Это приложение будет отвечать за отслеживание подробного учета отпусков сотрудников. Вы также будете реализовывать функции добавления , редактирования и отмены листьев.

Но сначала давайте получим базовое представление о микросервисах.

Что такое микросервисы?

Микросервисы – это еще одна архитектура проектирования для разработки программного обеспечения. При этом программное обеспечение состоит из небольших независимых сервисов, которые взаимодействуют через API REST.

Архитектуры микросервисов облегчают разработку и масштабирование приложений. Это также позволяет организации легко развивать свой технологический стек в дальнейшем, если потребуется.

Монолитный против Микросервисы

В монолитных архитектурах все процессы выполняются как единая служба, поэтому они тесно связаны. Это означает, что если один процесс выйдет из строя, это повлияет на все приложение, что приведет к единой точке отказа.

Кроме того, улучшение или добавление новых функций усложняется по мере роста базы кода. Эта сложность затрудняет эксперименты и реализацию новых идей.

В архитектуре микросервисов приложение создается путем объединения различных компонентов, которые работают независимо как служба. Эти службы взаимодействуют через четко определенный интерфейс облегченных API REST.

Каждая служба отвечает за выполнение одной задачи, и поскольку они выполняются независимо, каждая служба может быть обновлена, развернута и масштабирована в соответствии с требованиями конкретных функций приложения.

Представляем HarperDB

Вы собираетесь использовать Harper DB в качестве своей базы данных. Harper DB – это комплексное решение для управления данными и распределенная база данных с собственными операциями SQL, такими как объединение, упорядочение и т.д., А также выполнение без схемы NoSQL или даже на основе API.

Наиболее примечательными особенностями Harper DB являются:

  • Он имеет одну конечную точку для всех операций CRUD
  • Выполнение SQL-запросов к данным JSON
  • Поддерживает несколько плагинов, таких как ODBC, JDBC, Node-RED и т.д.
  • Он поддерживает как SQL, так и NoSQL
  • Устраняет необходимость в ORM (объектно-реляционном сопоставлении), возвращая результаты в виде массивов JSON
  • Выполняет сложные и совместимые с ACID SQL-запросы в JSON без какого-либо дублирования данных

Выглядит интересно, не так ли?

Настройка экземпляра базы данных Harper DB

Давайте теперь начнем с настройки экземпляра базы данных Harper:

  • Нажмите Зарегистрироваться Бесплатно

  • Затем вы получите электронное письмо, которое выглядит следующим образом:

  • Нажмите на кнопку Войти в студию Harper DB

Создание экземпляра

  • Нажмите на кнопку Создать облачный экземпляр Harper DB
  • Введите Свои Учетные Данные

Примечание : Эти учетные данные НЕ следует путать с вашей учетной записью Studio. Это для суперпользователя, которого вы создаете в этом экземпляре базы данных. Имя пользователя НЕ должно быть в форме электронного письма.

  • Выберите характеристики вашего экземпляра. Вы можете начать с бесплатной версии и обновить ее позже в соответствии с вашими потребностями.
  • Затем просмотрите свои данные и нажмите Подтвердить сведения об экземпляре

  • Наконец, нажмите на кнопку Добавить экземпляр

Еще через 5-10 минут ваш экземпляр будет готов. Вы также получите электронное письмо, как только это будет сделано.

URL-адрес экземпляра, который вы получаете, – это способ доступа к базе данных Harper с помощью вызовов REST .

Изначально в вашем экземпляре нет никаких схем или таблиц. Поэтому вам нужно сначала создать их.

Я выбрал Employee_Leaves в качестве имени для моей схемы. Однако вы можете использовать любое другое имя для своей схемы, а затем нажать на зеленую галочку, чтобы сохранить ее.

Далее вам нужно создать таблицы. На данный момент вы создадите два стола Сотрудник и Листья , первый предназначен для хранения всех сведений о сотрудниках, таких как имена и идентификаторы сотрудников, а второй – для хранения отпусков сотрудников в компании.

Обратите внимание, что вам пока не нужно добавлять все столбцы, они будут добавлены автоматически при необходимости. На данный момент при создании таблицы вам просто нужно указать хэш_атрибут имя. Атрибут хэша используется для уникальной идентификации каждой записи . Для обеих этих таблиц вы можете использовать ИДЕНТИФИКАТОР в качестве атрибута hash_attribute.

Создание приложения для весенней загрузки

Чтобы начать с spring boot, вам необходимо создать базовое приложение из Spring.io .

Выберите Maven проект и Java язык. Для версии Spring Boot выберите 2.5.3. Вам также придется добавить зависимость Spring-boot-starter-web и Lombok.

При необходимости заполните метаданные проекта. Например, вы можете задать группу как com.сотрудник , артефакт и имя как посещаемость , пакет как com.сотрудник.посещаемость и, наконец, введите краткое описание и нажмите “Создать”.

Извлеките загруженный проект и откройте его в вашей любимой среде разработки.

Далее, для доступа к экземпляру Harper DB из приложения Spring Boot вам сначала необходимо загрузить драйвер CDATA JDBC для HarperDB.

Драйвер CDATA JDBC позволяет наиболее простым способом подключиться к Harper DB из любого приложения на базе Java. Он скрывает и скрывает сложность доступа к данным и предоставляет дополнительные мощные функции безопасности, интеллектуальное кэширование, пакетирование, управление сокетами и многое другое.

Давайте рассмотрим шаги по интеграции этого драйвера в ваше приложение:

  • Вернитесь в корневой каталог вашего проекта и создайте новую папку с именем lib и извлеките содержимое zip-файла внутри этой папки.

  • Затем, чтобы импортировать внешний файл jar в приложение spring boot, откройте pom.xml файл и добавьте в него следующую зависимость:


    cdata.jdbc.harperdb
    cdata.jdbc.harperdb
    system
    1.0
    ${project.basedir}/lib/cdata.jdbc.harperdb.jar

Здесь ${project.basedir} относится к пути, по которому ваш pom.xml сохраняется, то есть в вашем корневом каталоге. Если у вас установлен драйвер по любому другому пути, вам необходимо добавить его абсолютный путь внутри <Системный путь> Метка.

Здесь важно отметить, что вы должны установить <область действия> как система , а также внутри плагинов установить как истинный .


  org.springframework.boot
  spring-boot-maven-plugin
  
    true
  

Это необходимо сделать, так как вы в конечном итоге собираетесь развернуть это приложение на сервере (AWS), и для того, чтобы сервер знал о любых внешних файлах JAR , необходимы эти конфигурации.

Теперь, чтобы установить соединение между вашим приложением и экземпляром Harper DB, создайте новый пакет и назовите его service . Внутри этого создайте новый Java-файл с именем ConnectionService.java и добавьте в него следующее содержимое:

package com.employee.attendance.service;

import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

@Service
public class ConnectionService {
    public Connection createConnection() throws SQLException {
        return DriverManager.getConnection("jdbc:harperdb:Server=https:xyz.harperdbcloud.com;User=admin;Password=1234;UseSSL=true;");
    }
}

@Service аннотация используется с классами, которые предоставляют некоторые бизнес-функции

Здесь вы устанавливаете соединение с базой данных, используя “Строку подключения” внутри метода getConnection() , доступного в Менеджер драйверов класс.

Кроме того, вы также можете подготовить параметры подключения с помощью объекта свойств. Передайте объект свойств менеджеру драйверов:

Properties prop = new Properties();
prop.setProperty("Server","https:xyz.harperdbcloud.com");
prop.setProperty("User","admin");
prop.setProperty("Password","1234");

Connection conn = DriverManager.getConnection("jdbc:harperdb:",prop);

Замените сервер , пользователя и пароль своими учетными данными, и все готово.

Разработка API-интерфейсов REST

Теперь, когда соединение между вашим приложением и Harper D B успешно установлено, давайте начнем с создания API Restful.

Сначала создайте новый пакет под названием контроллер . Внутри этого создайте новый класс и назовите его AttendanceController.java .

Класс контроллера – это место, где вы будете предоставлять все конечные точки ваших микросервисов. Эти конечные точки – это то, что различные микросервисы используют для связи друг с другом.

Для этого приложения вы создадите 4 конечные точки:

  • ПОЛУЧИТЬ /api/получить/все/листья/{идентификатор сотрудника} – Чтобы получить все отпуска, которые конкретный сотрудник подал до сих пор.

  • ОПУБЛИКОВАТЬ /api/добавить/оставить – Для добавления нового отпуска для сотрудника.

  • ПОСТАВИТЬ /api/редактировать/оставить – Чтобы изменить дату существующего отпуска.

  • УДАЛИТЬ /api/отменить/оставить – Чтобы удалить существующий отпуск.

Вот как будет выглядеть полный класс контроллера после добавления этих 4 конечных точек:

package com.employee.attendance.controller;

import com.employee.attendance.dto.EmployeeDataDTO;
import com.employee.attendance.dto.EmployeeEditDataDTO;
import com.employee.attendance.service.AttendanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;

@RestController
public class AttendanceController {

    @Autowired
    private AttendanceService service;

    @GetMapping(value = "/api/get/all/leaves/{employeeId}")
    public List> getAllLeavesForEmployee(@PathVariable String employeeId) {
        return service.getAllLeavesForEmployee(employeeId);
    }

    @PostMapping(value = "/api/add/leave")
    public HashMap addNewLeave(@RequestBody EmployeeDataDTO employeeData) {
        return service.addNewLeaveForEmployee(employeeData);
    }

    @PutMapping(value = "/api/edit/leave")
    public HashMap editLeave(@RequestBody EmployeeEditDataDTO employeeEditData) {
        return service.editLeaveForEmployee(employeeEditData);
    }

    @DeleteMapping(value = "/api/cancel/leave")
    public HashMap cancelLeave(@RequestBody EmployeeDataDTO employeeData) {
        return service.cancelLeaveForEmployee(employeeData);
    }
}

Давайте теперь создадим еще один класс под названием AttendanceService.java в пакете службы , который вы создали ранее. Внутри этого класса вы напишете всю свою бизнес-логику. Итак, давайте реализуем все 4 метода, которые упомянуты в вашем контроллере:

package com.employee.attendance.service;

import com.employee.attendance.dto.EmployeeDataDTO;
import com.employee.attendance.dto.EmployeeEditDataDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@Service
@Slf4j
public class AttendanceService {

    @Autowired
    private ConnectionService connectionService;

    public List> getAllLeavesForEmployee(String empId) {
        log.info("Getting all leaves for employee - {}",empId);
        List> resultList = new ArrayList<>();
        try {
            Connection conn = connectionService.createConnection();
            PreparedStatement statement = conn.prepareStatement("Select * From Employee_Leaves.Leaves where empId = ?");
            statement.setString(1,empId);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()) {
                HashMap result = new HashMap<>();
                result.put("date_of_apply",new Date(Long.parseLong(resultSet.getString("__createdtime__"))).toString());
                result.put("last_update_date",new Date(Long.parseLong(resultSet.getString("__updatedtime__"))).toString());
                result.put("leave_applied_for",resultSet.getString("date"));
                result.put("employee_id",resultSet.getString("empId"));
                resultList.add(result);
            }
            conn.close();
        } catch (Exception e){
            log.error("Error occurred", e);
            HashMap result = new HashMap<>();
            result.put("Error",e.getMessage());
            resultList.add(result);
        }
        return resultList;
    }

    public HashMap addNewLeaveForEmployee(EmployeeDataDTO employeeData) {
        log.info("Inserting new leave for employee - {}",employeeData.getEmployeeId());
        HashMap result = new HashMap<>();
        try {
            Connection conn = connectionService.createConnection();
            PreparedStatement statement = conn.prepareStatement("INSERT INTO Employee_Leaves.Leaves (date, empId) VALUES (?,?)");
            statement.setString(1, employeeData.getDate());
            statement.setString(2, employeeData.getEmployeeId());
            int count = statement.executeUpdate();
            if(count>0) {
                result.put("Message", "Success");
                result.put("Affected rows", String.valueOf(count));
            }
            conn.close();
        } catch (Exception e){
            log.error("Error occurred", e);
            result.put("Error",e.getMessage());
        }
        return result;
    }

    public HashMap editLeaveForEmployee(EmployeeEditDataDTO employeeEditData) {
        log.info("Updating leave for employee - {}",employeeEditData.getEmployeeId());
        HashMap result = new HashMap<>();
        try {
            Connection conn = connectionService.createConnection();
            PreparedStatement statement = conn.prepareStatement("UPDATE Employee_Leaves.Leaves SET date = ? WHERE empId=? and date = ?");
            statement.setString(1, employeeEditData.getNewDate());
            statement.setString(2, employeeEditData.getEmployeeId());
            statement.setString(3, employeeEditData.getPreviousDate());
            int count = statement.executeUpdate();
            if(count>0) {
                result.put("Message", "Success");
                result.put("Affected rows", String.valueOf(count));
            }
            conn.close();
        } catch (Exception e){
            log.error("Error occurred", e);
            result.put("Error",e.getMessage());
        }
        return result;
    }

    public HashMap cancelLeaveForEmployee(EmployeeDataDTO employeeData) {
        log.info("Cancelling leave for employee - {}",employeeData.getEmployeeId());
        HashMap result = new HashMap<>();
        try {
            Connection conn = connectionService.createConnection();
            PreparedStatement statement = conn.prepareStatement("DELETE FROM Employee_Leaves.Leaves WHERE empId = ? and date = ?");
            statement.setString(1, employeeData.getEmployeeId());
            statement.setString(2, employeeData.getDate());
            int count = statement.executeUpdate();
            if(count>0) {
                result.put("Message", "Success");
                result.put("Affected rows", String.valueOf(count));
            }
            conn.close();
        } catch (Exception e){
            log.error("Error occurred", e);
            result.put("Error",e.getMessage());
        }
        return result;
    }
}

Сделав это, давайте разберемся, для чего используется каждая из этих четырех функций:

  • получить Все Отпуска Для Сотрудника() .

Он будет отвечать за получение всех отпусков для конкретного сотрудника из Отпусков таблица. Вы просто устанавливаете соединение, а затем запрашиваете таблицу Листья на основе идентификатора сотрудника.

Всякий раз, когда сотруднику необходимо подать заявление на отпуск, будет вызываться эта функция, которая будет принимать объект EmployeeDataDTO класс и добавит новый отпуск в таблицу Отпуск вашей базы данных.

Если в случае, если сотрудник захочет изменить дату, на которую отпуск был подан ранее, функция редактировать отпуск для сотрудника() будет отвечать за изменение этого в вашей базе данных.

Это просто отменит конкретный отпуск для сотрудника, т.е. Удалит строку из таблицы. Эта функция также принимает объект класса Данные сотрудника D В в качестве своих параметров.

Следующее, что нужно сделать, это понять использование Данных сотрудников D ДЛЯ и Сотрудник Редактирует данные D В классы.

Эти два класса будут действовать как ваши объекты передачи данных или просто DTO. Они будут хранить данные, которые вы передадите в теле запроса API, и передавать их в службу для обработки через класс контроллера.

Чтобы сгенерировать эти файлы Java, создайте новый пакет с именем в и добавьте в него два файла, один из которых будет EmployeeDataDTO.java и еще один будет EmployeeEditDataDTO.java .

Вот содержание EmployeeDataDTO.java будет удерживать:

  • Идентификатор сотрудника
  • Дата, на которую подается заявление об отпуске
package com.employee.attendance.dto;

import lombok.Data;

@Data
public class EmployeeDataDTO {
    private String employeeId;
    private String date;
}

И EmployeeEditDataDTO.java будет иметь следующие свойства:

  • Идентификатор сотрудника
  • Предыдущая дата, которую пользователь хочет отредактировать
  • Новая дата отпуска
package com.employee.attendance.dto;

import lombok.Data;

@Data
public class EmployeeEditDataDTO {
    private String employeeId;
    private String previousDate;
    private String newDate;
}

@Data является полезной аннотацией, которая объединяет функции @toString , @EqualsAndHashCode , @Получатель / @Сеттер . Он доступен в разделе Ломбок зависимость.

Тестирование конечных точек

Я вручную вставил некоторые исходные данные в таблицы базы данных (щелкнув ‘ + ‘ знак в правом верхнем углу таблицы) для целей тестирования:

  • Таблица Сотрудник
  • Стол Оставить

Теперь вам нужно нажать на эти 4 конечные точки API, чтобы проверить, все ли работает так, как ожидалось.

Для этого вы должны загрузить приложение Postman в вашей локальной среде разработки с их официальных загрузок .

После загрузки и успешной установки откройте приложение и запустите приложение Spring Boot.

Если вы используете IDE, такую как IntelliJ IDEA, вы можете запустить приложение Spring Boot, следуя этим инструкциям:

  • Нажмите на Добавить конфигурацию в верхней строке меню.
  • Откроется новое диалоговое окно, нажмите на Добавьте новые конфигурации запуска и выберите Maven из выпадающего списка.
  • Дайте вашей конфигурации запуска имя. Рабочий каталог будет выбран автоматически. Вам просто нужно ввести команду spring-boot:выполнить в командной строке, а затем нажать “Применить” и “ОК” и, наконец, запустить приложение.

Следующее, что вам нужно сделать, это нажать на конечные точки с помощью приложения Postman:

  • /api/получить/все/листья/{идентификатор сотрудника}
  • /api/добавить/покидать

Чтобы проверить, был ли добавлен отпуск успешно или нет, давайте снова вызовем API api/get/all/leaves , который вы использовали на первом шаге:

Как вы можете видеть в ответе, сотрудник, чей идентификатор равен 1, теперь имеет два отпуска. То же самое было отражено в базе данных:

  • /api/редактировать/покидать

Опять же, давайте проверим, была ли изменена предыдущая дата или нет, вы получите:

Это означает, что функция редактирования также работает нормально.

  • /api/отменить/покидать

И теперь, нажав на API GET leaves, вы должны получить только одну запись в ответ:

Таким образом, все ваши конечные точки работают должным образом в локальной среде разработки. Давайте продвинемся вперед и посмотрим, как вы можете развернуть эти API на сервере.

Создание файла JAR

JAR (архив Java) – это формат файла пакета, используемый для объединения всех файлов классов Java и связанных с ними метаданных и ресурсов (текст, изображения и т.д.) в один файл для распространения прикладного программного обеспечения или библиотек на платформе Java.

Проще говоря, файл JAR содержит сжатую версию файлов .class, аудиофайлов, файлов изображений или других каталогов.

Чтобы создать файл JAR, убедитесь, что Maven установлен в вашей локальной среде разработки. Если нет, выполните следующие действия для настройки maven (В ОС Windows):

  • Перейдите к официальному Веб-сайт Maven и загрузите zip-файл Maven. Например: apache-maven-3.8.2-src.zip .

  • Распакуйте содержимое и скопируйте путь к папке bin внутри.

  • Откройте системные переменные среды на панели управления, найдите переменную ПУТЬ и нажмите кнопку Изменить .

  • В диалоговом окне “Изменить переменную среды” нажмите на Новое и добавьте полный путь к папке bin , которую вы только что скопировали.

  • Наконец, нажмите кнопку ОК . Чтобы проверить конфигурацию, откройте новую командную строку и введите mvn –версия . Если версия видна вам, это означает, что конфигурации верны.

Если вы используете любую другую ОС, вы можете найти инструкции по установке для этого на официальном Веб-сайт Maven . Для получения более подробных инструкций вы также можете ознакомиться с этой статьей .

Затем, чтобы создать файл JAR для вашего приложения, выполните команду mvn clean install в корневом каталоге вашего проекта.

Новая папка с именем Цель будет создана. Внутри этой папки вы найдете свой недавно созданный файл JAR.

Другой способ создать JAR-файл – из вашей среды разработки. Например, в Intellij вы можете перейти на вкладку maven из меню боковой панели и дважды щелкнуть Устанавливать .

И вот как должна выглядеть ваша полная структура проекта к настоящему времени:

├── lib
├── src
├── target
└── pom.xml

Внутри src>главная> java>com> сотрудник>посещаемость у вас должны быть следующие файлы и структура:

├── controller
│ └── AttendanceController.java
├── dto
│ └── EmployeeDataDTO.java
│ └── EmployeeEditDataDTO.java
├── service
│ └── AttendanceService.java
│ └── ConnectionService.java
└── AttendanceApplication.java

Развертывание приложения в AWS

Последним шагом будет развертывание вашего кода на сервере. В этом разделе вы узнаете, как развернуть приложение в AWS Elastic Beanstalk.

Используя Elastic Beanstalk , вы можете легко развертывать приложения в облаке AWS и управлять ими, не беспокоясь об инфраструктуре, на которой работают эти приложения. Это снижает сложность управления, не ограничивая выбор или контроль. Вы просто загружаете свое приложение, и Elastic Beanstalk автоматически обрабатывает детали предоставления емкости, балансировки нагрузки, масштабирования и мониторинга работоспособности приложений.

Создание эластичной среды бобового стебля

Как только вы войдете в свою учетную запись AWS , перейдите на панель поиска вверху и введите “Эластичный бобовый стебель” и нажмите “Создать новое приложение” в правом верхнем углу.

Он будет просить вашего:

  • Название приложения
  • Теги приложений (не обязательны)
  • Платформа
  • Код приложения

Введите имя вашего приложения, и при желании вы можете добавить до 50 тегов для ресурсов ваших приложений Elastic Beanstalk.

Для платформы выберите “Java” из выпадающего списка, и она автоматически заполнит “ветвь платформы” и “версию” самостоятельно.

Для кода приложения выберите Загрузить свой код а затем выберите файл JAR, созданный на предыдущем шаге.

Просмотрите конфигурацию и запустите среду. При запуске приложения вы увидите нечто подобное на панели мониторинга среды:

Как только ресурсы приложения будут развернуты и среда создана, вы заметите, что работоспособность приложения сохраняется Суровый . Это связано с тем, что приложение Spring Boot все еще нуждается в некоторой настройке:

Давайте рассмотрим, как ее решить, в следующем разделе.

Настройка Загрузки Spring С Помощью Переменных Среды

По умолчанию приложения Spring Boot прослушивают порт 8080, тогда как Elastic Beanstalk ожидает, что приложение будет прослушивать порт 5000.

Есть два способа исправить эту ошибку: либо вам нужно изменить порт, на который настроен Elastic Beanstalk, либо изменить порт, который прослушивает приложение Spring Boot. В этом уроке вы измените порт, который прослушивает приложение Spring Boot, так как это проще.

Для этого вам необходимо определить переменную среды SERVER_PORT в среде Elastic Beanstalk и установить ее значение 5000.

  • Нажмите на Конфигурация в меню боковой панели на странице вашей среды.

  • На странице конфигурации у вас будет конфигурация программного обеспечения, нажмите на Редактировать :

  • Далее вы увидите, что некоторые переменные среды уже установлены. Они автоматически устанавливаются Elastic Beanstalk, когда он настроен на использование платформы Java.

  • Чтобы изменить порт, который прослушивает Spring Boot, как упоминалось выше, вам необходимо добавить новую переменную среды по имени СЕРВЕР_ПОРТ с его стоимостью 5000.

Нажмите “Применить”, и изменение конфигурации приведет к перезапуску приложения.

После перезапуска он получит новую конфигурацию с помощью переменных среды. Примерно через минуту вы получите работоспособный экземпляр приложения, запущенный и работающий.

Тестирование приложения в облаке

После успешного развертывания вы получите базовый URL-адрес приложения. Вы также можете получить доступ к тому же с боковой панели:

Теперь замените localhost:8080 этим новым URL-адресом и попробуйте получить доступ к одной из ваших конечных точек API:

И вы можете получить правильный ответ. Это означает, что приложение было успешно развернуто.

Вывод

На этом вы подходите к концу этого урока. Целью этого урока было использовать Spring Boot и Harper DB для создания микросервисов. Вы также рассмотрели пошаговый процесс развертывания одного и того же приложения в AWS.

Как Spring Boot, так и AWS широко используются в отрасли, но Harper D B может быть для вас чем-то новым. Причина выбора Harper DB заключается в его простой интеграции с приложением Spring Boot, а также в примечательных функциях, о которых я упоминал в начале этой статьи.

Надеюсь, вы узнали что-то новое. В случае, если вы где-то застряли, пожалуйста, не стесняйтесь высказывать свои сомнения в комментариях.

Кроме того, полный исходный код приложения, используемого в этом руководстве, можно найти в этом репозитории GitHub .

Оригинал: “https://dev.to/apoorvtyagi/building-microservices-using-spring-boot-harperdb-and-deploying-it-on-aws-524a”