본문 바로가기

Develop197

Cloud 개요 및 AWS 서비스 - 수동 배포 데이터 센터에서는 서버의 자원과 공간, 네트워크 환경을 제공한다. (On-premise) 현대의 클라우드 컴퓨팅은 On-premise 환경과는 달리, 가상 컴퓨터를 대여한다. 클라우드 컴퓨팅의 장점 필요할 때마다 컴퓨팅 능력을 유연하게 조절 고정적 비용이 들어가는 On-premise 환경과는 달리, 사용한 만큼의 비용만 지불 컴퓨터의 스냅샷을 통해 다른 컴퓨터로 즉시 이주 가능 클라우드 컴퓨팅의 단점 특정 클라우드 벤더에 종속되기 때문에, 그 벤더 서비스에 문제가 생기면 내가 배포하고 관리하는 환경에도 영향을 미친다. 클라우드의 대표적인 서비스 및 기본 제공 서비스 범위 SaaS(Software as a Service) : 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공 Paas(Platform a.. 2022. 12. 8.
Cloud 배포 자동화 배포 자동화 한 번의 클릭 또는 명령어 입력을 통해, 전체 배포 과정을 자동으로 진행하는 것을 의미한다. 장점 시간을 절약할 수 있다. 수동 배포 과정 중 발생하는 휴먼 에러(Human Error) 방지할 수 있다. 배포 자동화 파이프라인(Pipeline) 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 의미한다. Source stage : 원격 저장소에 관리되고 있는 소스 코드에 변경 사항이 일어날 경우, 이를 감지하고 다음 단계로 전달하는 작업을 수행한다. Build stage : Source stage에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가공하고 결과물을 다음 단계로 전달하는 작업을 수행한다. Deploy stage : Build stage에서 전달받은 결과물을 실제 서.. 2022. 12. 8.
클라이언트 배포 시, AWS S3 호스팅 과정 중 에러 로컬 환경의 터미널에서 클라이언트 의존성 모듈을 설치, 환경 변수 설정을 한 후에 빌드하는 도중 다음과 같은 에러가 발생했다. nvm, node를 정상적으로 설치했기 때문에 생각치 못한 에러였다. 결국에는 nvm에서 사용하는 node의 버전을 16으로 낮추고 빌드하니 간단하게 해결되었다. $ node -v # node 버전 확인 $ nvm use 16 # 16버전의 node를 nvm에서 사용 ** npm run build 명령어로 build가 되지 않는다면, nvm이 사용하는 node의 버전을 낮추고 빌드해보자 2022. 12. 8.
AWS CodePipeline 배포 자동화 과정 중 에러 AWS CodePipeline 배포 자동화 과정 중 CodeDeploy 서비스에서 애플리케이션을 생성하는 단계에서 다음과 같은 생성 오류가 발생했다. EC2 인스턴스 역할 권한 추가 부분에서 빠뜨린 부분이 없는지 다시 체크하고 권한 관련 항목들을 검토해보았지만 별다른 문제는 찾지 못했다. 자세히 보니, 상단에 '버지니아 북부'라는 리전으로 설정되어 있었기 때문에 발생한 에러였다. '서울'로 바꾸어주니 애플리케이션이 정상적으로 생성되었다. ** AWS 리전의 가용 영역이 맞는지부터 먼저 체크하도록 하자 2022. 12. 7.
Docker Docker 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트 장점 의존성 충돌 문제 해결 개발과 배포 환경을 일치시켜줌 수평 확장에 용이 각 서버에 새로운 내용을 배포하기에 용이 컨테이너에 의해 격리되어 개별적으로 소유할 수 있는 자원 프로세스 - 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없음 네트워크 - 컨테이너에는 하나의 IP 주소가 기본으로 할당되어 있음 파일시스템 - 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있음 컨테이너 기술의 가장 큰 장점은 실행 환경의 일치이다. - Docker docs : https://docs.docker.com/engine/reference/commandline/con.. 2022. 12. 6.
Spring WebFlux WebFlux란 Reactor의 타입인 Flux가 Web에서 사용되는 것으로, 리액티브한 웹 애플리케이션을 구현하기 위한 기술 자체를 상징하고 있다. Spring WebFlux란 Spring 5부터 지원하는 리액티브 웹 애플리케이션을 위한 웹 프레임워크로, Spring WebFlux 프레임워크를 사용해서 리액티브한 웹 애플리케이션을 구현할 수 있다. Spring WebFlux에서 꼭 Reactor만 사용할 수 있는 것은 아니다. Reactor 이외의 리액티브 라이브러리인 ReactiveAdapter와 ReactiveAdapterRegistry를 통해 사용이 가능하다. - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/spring.. 2022. 12. 1.
Spring WebFlux - Reactor (Project Reactor) Reactor (=Project Reactor) Reactive Streams 표준 사양을 구현한 구현체 중 하나 Reactive한 애플리케이션으로 동작하는 데 핵심적인 역할을 담당하는 라이브러리 - https://projectreactor.io/ Reactor 특징 Non-Blocking 통신 지원 Publisher 타입으로 Mono[0|1], Flux[N] 두 가지 타입을 제공 MSA(Microservice Architecture)에 적합 Backpressure - https://projectreactor.io/docs/core/release/reference/#reactive.backpressure Reactor 구성 요소 Reactor Sequence의 시작점 Flux 데이터를 emit하는 Pub.. 2022. 11. 30.
프로젝트 생성 시, gradle 버전 에러 평소와 같이, Intellij - spring initializer를 이용해 spring project를 생성하고 있었는데, 빌드 과정에서 에러가 발생했다. Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.0. gradle 3.0.0. 버전의 플러그인을 기존 경로에서 찾을 수 없다는 것이었고, 전에 하던 프로젝트의 gradle 버전을 살펴보니 2.7.x. 버전을 사용하고 있었다. 아직 gradle 3.0.0. 버전을 다운받지 않아서 빌드하는 과정에서 해당 버전의 gradle을 찾지 못해 발생한 것 같았다. 결국, 위와 같이 버전 설정을 다시 해주고 reload해주니 정상적으로 프로젝트가 생성되었다. ## Intellij의 .. 2022. 11. 29.
Spring Webflux - Reactive Programming Ref - https://www.reactivemanifesto.org/ Reactive System ✔ MEANS - Reactive System에서 사용하는 커뮤니케이션 수단이다. Message Driven - 메시지 기반의 통신을 통해 여러 시스템 간에 느슨한 결합을 유지한다. ✔ FORM - 메시지 기반 통신을 통해 리액티브 시스템이 어떤 특성을 가지는 구조로 형성되는지 의미한다. Elastic - 시스템으로 들어오는 요청량에 상관없이 일정한 응답성을 유지하는 것을 의미한다. Resillient - 시스템의 일부분에 장애가 발생하더라도 응답성을 유지하는 것을 의미한다. ✔ VALUE - Reactive System의 핵심 가치가 무엇인지를 표현하는 영역이다. Responsive - 클라이언트의 요.. 2022. 11. 29.