다시 웹, 백엔드로 57

Spring Multi Module

Spring Multi Module- 필요한 기능별로 Module을 생성- 레고를 조립하듯 필요한 Module을 조립- N개의 Module이 조립 되어 있는 프로젝트를 Multi Module 프로젝트라 함- ex) 로그인 Module, 인증 Module, DB 엔티티 Module 등 사용 이유는?- API 서버에서도 DB Entity가 필요하고 Batch 서버에서도 동일한 DB Entity가 필요하다면- 중복된 Entity를 Module화 시켜 사용하기 위해 Multi Module 프로젝트를 사용함- 독립적으로 관리 한다면 중복해서 관리해야하므로 Risk가 늘어남  Exception 핸들링- 언어 혹은 프레임워크에서 발생한 Exception은 반드시 Custom하게 Wrapping하여 처리해야함- @Re..

멀티 컨테이너 서비스를 위한 docker compose

멀티 컨테이너 서비스를 위한 docker compose 멀티 컨테이너 서비스 구성wordpress 와 mysql 을 이용한 web application- 다음과 같은 구조의 2-tier 구성을 docker run을 통해 수행해돔  IP:8888 접속 docker-compose 작성  docker compose는   - 여러번의 docker CLI를 실행하지 않고, 한번에 관련 애플리케이션들을 YAML 파일로 구성하여 내부 환경 구성과 속성을 실행 할 수 있음   - 설정 값을 캐싱하기 때문에 재시작 시 변경이 없다면 캐싱된 정보를 그대로 사용하여 빠른 서비스 실행을 보장 할 수 있음   - YAML 코드에 포함된 애플리케이션들은 동일 네트워크에 포함되기 때문에 복잡한 연결 구성 없이 쉽게 API 통신이 ..

Nodejs 환경 Image build

Nodejs 환경 Image build Nodejs 기반의 웹 애플리케이션에 사용되는 base image 생성- Node.js는 크롬 V8 JavaScript 엔진의 성능을 네트워크 및 파일작업과 같은 저수준 시스템 기능과 결합한 오픈 소스 기술- 브라우저에서 서버로의 지속적인 연결이 필요한 앱- 채팅이나 웹 푸시 알림과 같은 실시간 애플리케이션에 적합- 사용 예   - 단일 페이지 애플리케이션   - 실시간 애플리케이션   - IoT 기기용 Node.js 애플리케이션   - 위치 기반 애플리케이션   - 스트리밍 애플리케이션 작업 수행- Dockerfile   - nodejs base image에 필요한 구성요소 작성- node_modules   - node express 설치로 각종 의존성 정보들이 ..

Docker 플랫폼 환경 구성

Docker 플랫폼 환경 구성 GUI 컨테이너 관리 도구, Portainerhttps://hub.docker.com/r/portainer/portainer-cePotainer CE는 Docker, Swarm, Kubernetes 및 ACI 환경을 관리하는  데 사용할 수 있는 컨테이너화된 애플리케이션을 위한 경량 서비스 제공 플랫폼배포와 사용이 간단하게 설계되었고, 이 애플리케이션을 통해 Smart GUI 및 광범위한 API 를 통해 docker 에서 사용되는 대부분의 리소스 (컨테이너, 이미지, 볼륨, 네트워크 등)를 관리할 수 있음  Portainer 컨테이너 생성docker pull portainer/portainer-ce  docker volume create portainer_datadocker..

웹 서비스 확장 전략

웹 서비스 확장 전략  HA (고가용성) / Resilience (회복 탄력성) 웹 서비스 확장 전략실무 개발 유형솔루션 개발 (B2B) / SI 개발 / 서비스 개발 (B2C) (고가용성) 스케일업을 통한 서비스 확장Scale Up (스케일 업)기존 서버의 사양을 업그레이드해 시스템을 확장하는 것CPU나 RAM 등을 추가하거나 부품, 서버로 교환하는 방법 Scale Out (스케일 아웃)서버 여러대를 추가하여 시스템을 확장하는 것여러대로 나눠지기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱이 필수적으로 동반되어야 함   블루그린 배포블루를 구버전, 그린을 신버전으로 지칭하여 붙여진 이름으로 운영 환경에 구버전과 동일하게 신버전의 인스턴스를 구성한 후, 로드밸런서를 통해 신버전으로 모든 트..

Swagger를 통한 API 공개

Swagger를 통한 API 공개  Swagger란?개발한 REST API 를 편리하게 문서화 해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트 할 수 있는 프로젝트 Spring Boot 에서는 간단하게  springfox-boot-starter 를 gradle dependencies 에 추가함으로 사용할 수 있음 (2.x 사용)   ➡️3.x 대에서는 springdoc 을 사용하는게 좋음 주의할 점은 운영환경과 같이 외부에 노출되면 안되는 곳에는 사용할 땐 주의 해야함   Swagger Annotation   예제                   feat. 패스트캠퍼스 - Java/Spring 웹 개발 마스터 초격차

JUnit으로 테스트 하기

JUnit으로 테스트 하기 TDD (Test-Driven-Development)테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위별로 검증 하는 테스트 프레임워크 단위테스트작성한 코드가 기대하는 대로 동작을 하는지 검증 하는 절차 JUnitJava 기반의 단위 테스트를 위한 프레임워크, Annotation 기반으로 테스트를 지원하며, Assert 를 통해 (예상, 실제)를 통해 검증 JacocoJava 코드의 코드 커버리지를 체크하는 라이브러리, 결과를 html, xml, csv 로 확인 가능    예제        REST API CRUD 테스트          테스트 커버리지 확인하기 test 가 실행 되어야함 (더블클릭으로 실행)         ..

Server(Client) to Server 연결

Server(Client) to Server 연결지금까지는 Server의 입장에서 API 를 제공하는 방법에 대해서 학습함Back-end 에서 Client로 다른 Server 와의 연결은 필수임     예제 GET- Client     - Server     POST- Client     - Server    exchange / genericExchange - Client      - Server                feat. 패스트캠퍼스 - Java/Spring 웹 개발 마스터 초격차