SW/마이크로서비스

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

얇은생각 2020. 5. 28. 07:30
반응형

Swagger를 활용한 API 명세 & 테스트

Swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해주는 오픈소스 프로젝트입니다. 특히 REST API를 만드는 경우 주소나 파라미터가 변경되더라도 그 변경된 소스를 그대로 참조 문서로 만들어줍니다. 따라서 API가 수정되더라도 이 API를 이용하는 개발자는 문서를 참조하고 또 쉽게 테스트를 할 수 있습니다.

따라서 Swagger를 통해 API를 테스트하기 위해 pom.xml 파일에 화면과 같이 추가합니다. Config 패키지에 SwaggerConfig 클래스 스프링 부트 프로젝트에 추가하였습니다. 마지막으로 Application의 Swagger 어노테이션을 추가합니다. 소스코드가 변경되었으니 프로젝트를 다시 Build하고 서버를 실행시킵니다.

 

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

 

서버가 실행되면 Swagger UI를 실행해서 확인해 보겠습니다. 웹브라우저에서 localhost:8080/swagger-ui로 접근해보면 JPA에서 자동으로 생성한 메서드들에 매핑되는 REST API를 확인할 수 있습니다. 그럼 간단하게 Account 데이터를 하나 추가해보고 정상적으로 추가되었는지 확인해 보겠습니다.

 

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

 

먼저 POST를 선택하고 Try It Out 버튼을 누르면 주소, 우편번호, 이메일주소 등 Account를 생성하기 위한 정보를 입력할 Body 영역이 활성화 됩니다. 

 

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

 

여기에 생성하려는 데이터들을 입력한 후 화면 아래 파란색의 Execute 버튼을 누르면 POST 메서드가 실행되고
입력한 데이터의 오류가 없다면 화면과 같이 입력한 데이터가 Account에 정상적으로 추가된 것을 확인할 수 있습니다. 또한 화면과 같이 GET 메서드를 통해서도 Account에 추가된 데이터를 확인할 수 있습니다. 같은 방법으로 더 많은 Account 정보를 추가할 수 있습니다. POST 이외에 GET, PUT, DELETE를 활용해서 데이터의 수정과 삭제도 해볼 수 있습니다.

 

 

H2DB를 활용한 API 테스트

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

 

이렇게 Swagger를 통해 API를 테스트해 볼 수 있었는데, 이 데이터를 H2DB를 활용해서 관리를 합니다. Spring Boot에서는 Application.properties가 아닌 Application.yml 파일을 이용해 프로파일 간의 속성들을 관리할 수 있습니다. Src/Main/Resources 내의 Application.properties 대신 Application.yml 파일을 위치시키면 자동으로 이 YML 파일을 로드하여 설정합니다.

YML을 사용하면 설정정보들을 들여쓰기로 구분해서 가독성을 높일 수 있습니다. 무엇보다 프로파일을 지정해서 환경에 따라 설정 값을 다르게 가져갈 수 있습니다. 따라서 우리도 Application.properties 파일을 Application.yml로 바꾸고 이 파일에 H2DB 활용을 위한 설정을 추가해봅니다.

포트는 기본 포트였던 8080을 11001로 변경하고, H2DB 사용을 위해 화면과 같이 설정정보를 입력합니다. 그리고 모든 변경사항을 저장하고 프로젝트를 다시 Build한 후 Account 서비스를 시작합니다. 앞에서 Swagger UI에서 POST 메서드를 실행해서 Account 데이터를 추가하는 실습을 진행했습니다.

이전 실습에 입력했던 데이터를 동일하게 입력해보도록 합니다. Application.yml 파일에 H2DB 연결 설정한 정보를 활용해서 H2DB를 연결합니다. 인터넷브라우저의 주소에 http://localhost:11001/h2-console을 입력하면 H2DB의 Login 화면이 출력됩니다. User Name과 Password를 입력하고 Connect 버튼을 누르면 H2DB에 로그인 할 수 있습니다.

 

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경


정상적으로 로그인이 되면 H2 Console 화면의 왼쪽에 Account 테이블이 생성된 것을 볼 수 있습니다. 이 Account를 선택하면 오른쪽에 SELECT 쿼리가 자동으로 입력됩니다.

 

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

 

이 쿼리는 Account 테이블에 있는 모든 데이터를 조회해 보는 Select 쿼리입니다. RUN 누르면 쿼리 결과가 출력됩니다. 이전에 Swagger UI에서 POST 메서드 통해 Account에 생성했던 정보로 이 데이터가 데이터베이스에 정상적으로 생성된 것을 확인합니다. 물론 Swagger UI의 GET 메서드를 통해서도 Account의 데이터를 확인할 수 있습니다.

 

 

저장소를 H2DB에서 MariaDB로 변경

마이크로서비스의 내부 구조는 비즈니스 로직이 가장 중요합니다. 이 비즈니스 로직의 결과를 어떻게 다룰지를 구현하는 기술들, 즉 브라우저에 표현하는 기술이나 데이터를 저장하는 기술들이 비즈니스 로직에 영향을 미치지 않도록 설계하는 것이 좋은 설계입니다.

JPA를 사용하는 경우에는 OR Mapper가 쿼리를 자동으로 생성해 줍니다. 저장소의 변경에도 쿼리 변경이 없으므로 JPA를 사용하면 저장소를 쉽게 변경할 수 있습니다. H2DB를 MariaDB로 변경해 보고, 데이터베이스의 변경, 즉 데이터를 관리하는 기술이 비즈니스 로직에 영향을 주는지 확인해봅니다.

 

 

Maria DB 설치

MariaDB 다운로드 사이트에서 MariaDB Installer를 다운로드 받아서 설치합니다. 설치가 시작되면 사용을 위한 라이선스에 동의 후 초기 설정된 경로에 설치를 시작합니다. 다른 설정은 그대로 유지하고 TCP Port를 33306으로 수정하고 설치를 계속 진행합니다.

 그리고 New Root Password를 입력합니다. 실습에서는 Root로 설정하였습니다. 그리고 기본 Character Set을 UTF-8로 변경하기 위해 Use UTF8 As Default Server’s Character Set에 체크를 하고 설치를 진행합니다.

 

 

HeidiSQL 설정

MariaDB의 설치가 끝나면 같이 설치된 Heidisql을 실행시키고 신규 세션을 생성합니다. 설명 화면에는 사용자 암호와 포트 번호를 입력해야 합니다. 앞에 MariaDB 설치 시 입력했던 대로 암호는 root, 포트는 33306을 입력하고 열기 버튼을 선택합니다.

암호와 포트번호가 정확히 입력되면 데이터베이스 관리 화면이 출력됩니다. 이렇게 MariaDB의 설치와 데이터베이스 사용 준비가 끝났습니다. 설치 후에는 프로젝트에서 MariaDB를 사용하기 위해 pom.xml 파일에 Dependency를 추가해주고 Application.yml에서 H2DB 설정정보를 주석처리하고 MairiaDB 연결을 위한 설정정보를 추가합니다. 설정정보가 변경되었으니 프로젝트를 다시 Build하고 서비스를 다시 실행시킵니다.

 

 

Swagger를 활용한 데이터 생성

그리고 이전과 동일하게 Swagger UI에 POST 메서드를 통해 주소, 우편번호, 이메일주소 등 Account를 생성하기 위한 정보를 입력하고 Execute를 눌러 실행시킵니다. POST가 정상적으로 동작해서 입력한 데이터가 Account에 정상적으로 추가된 것을 확인합니다. 데이터베이스에 데이터가 정상적으로 생성되었는지 확인합니다.

Heidisql 화면에서 데이터베이스를 새로고침 해보면 Account 테이블이 추가되어 보입니다. 그리고 데이터 탭을 눌러보면 Swagger에서 Post 메서드를 통해 생성한 데이터가 저장되어 있는 것을 확인합니다. 이렇게 저장소를 H2DB에서 MariaDB로 변경을 해보았습니다.

MariaDB를 사용하기 위한 Dependency 추가와 설정정보의 변경만으로 데이터베이스를 변경할 수 있습니다. 이와 같이 데이터 중심이 아닌 도메인 객체를 중심으로 설계를 하면 데이터베이스와 같은 외부의 기술 변화에도 비즈니스 로직에 전혀 영향이 없는, 즉 기술의 변화와 변경에 유연한 서비스를 개발할 수 있다는 것입니다.

마이크로서비스가 정상적으로 동작하는지, 데이터가 잘 저장되는지 오픈소스 도구인 Swagger UI를 활용해서 API를 테스트해 보고 정상적으로 동작하는 것을 확인했습니다. 또한 이론으로 설명을 했던 기술과 비즈니스의 분리도 실제로 개발했던 Account 서비스의 데이터베이스를 H2DB에서 MariaDB로 변경해 봄으로써 데이터 저장 기술과 비즈니스 도메인이 잘 분리되어 있다는 것도 확인해 보았습니다. 

반응형