분류 전체보기


Mac M1에서 Dockerfile을 빌드하여, Dockerhub에 배포한 후, AWS의 Ubuntu에 해당 이미지를 다운로드 받은 후, Docker-compose를 통해 배포하려고 시도하였다.. 해당 과정에서, Dockerfile의 이미지를 내려받는 중 JDK 플랫폼 불일치 에러 "exec format error"가 발생하였다. "exec /usr/local/openjdk-11/bin/java: exec format error 구글링을 통해 나온 해당 문제점은 아래와 같았다. Mac M1에서 Docker를 빌드한 이미지는 ARM64 아키텍처를 사용하므로, Ubuntu 서버에서 실행하려면 AMD64 아키텍처에 호환되는 이미지를 빌드해야 한다. 즉, Mac OS의 M1에서 발생하는 고질적인 문제가 원인이었..


이전에 Google Cloud Platform (GCP)를 이용하여 Docker 컨테이너를 배포하는 방법을 포스팅한 적 있다.이번에는 AWS를 사용하여 배포하는 방법을 살펴보도록 하자. AWS 인스턴스에, Docker 컨테이너를 실행시키고, 네트워크 설정을 통해 외부에서 접근가능하게 하는 설정까지를 시도하여 간단하게 배포하는 방법을 간략하게 다루어보도록 하겠다. 해당 포스팅에서는 Docker에 대한 자세한 설명은 다루지 않으므로, Docker에 대해서 모른다면 블로그 내의 다른 Docker 관련 포스팅을 참고하자. 무엇을 할 것인가 해당 포스팅은 AWS 프리티어의 한도 안에서 서버를 구축하는 것을 목표로 한다. 즉 RDS, LB 등 비용이 필요한 다른 AWS의 기능들 없이 가장 간단한 형태로 웹 애플리케..


쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동화된 방식으로 관리하고 확장할 수 있도록 도와준다. 쉽게 말해서 컨테이너 기술을 제공해 주는 것의 예시가 도커라면, 쿠버네티스는 컨테이너들의 집합을 관리해주는 플랫폼이다. 예를 들어 생각해보면, 우리가 웹 서버를 여러대의 서버 인스턴스(컴퓨터)들에서 도커 컨테이너로 운영하고 있다고 생각해보자. 만약 쿠버네티스를 사용하지 않는다면, 우리는 배포할 때에, 일일이 서버 인스턴스에 접속해서 도커 명령어를 통해 업데이트를 진행해야 하는 번거로움이 있을 것이다. 쿠버네티스는 이런 일련의 과정을 자동화해주며, 도커 호스트 관리, 컨테이너 배..


이번 포스팅에서는 기존에 http로만 접속 가능했던 배포 API를 SSL 인증서를 적용하여 https로 접속 가능하게 만들고, 로드밸런서를 적용을 통해 HTTPS 및 부하 분산을 적용시키는 것을 다룰 것이다. 로드밸런서 로드밸런서는 여러 대의 백엔드 서버 또는 인스턴스 그룹 사이에서 들어오는 트래픽을 분산하는 역할을 한다. NginX 등이 리버스 프록시로서의 로드밸런서의 역할을 할 수 있으며, GCP 또한 클라우드 내에서 로드밸런서 장착을 지원한다. 리버스 프록시 리버스 프록시는 클라이언트와 백엔드 서버 사이에 위치하여, 백엔드 서버의 포트, 리소스 자원 등의 노출을 방지하고 보안을 강화할 수 있다. SSL 종단점 설정을 통해 암호화된 연결(HTTPS)을 처리가 가능하다. TLS/SSL 종단점: HTTP..


이번에는 앞서 배포해보았던 인스턴스에 도메인을 연결하여, IP가 아닌 도메인으로 접근 가능하도록 만들어보려고 한다. DNS 영역 만들기 구매한 도메인을 백엔드 서버와 연결시키려고 한다. 메뉴->네트워킹->Cloud DNS->영역 만들기에 들어가 DNS 영역을 만들자. 영역 이름을 작성하고, DNS 영역 이름에 구매한 도메인 이름을 작성해주자. DNS 영역의 리소스 레코드 성공적으로 DNS 영역을 만들었다면 다음과 같은 화면이 보일 것이다. 아래쪽에 리소스 레코드들이 모여있는 레코드 모음이라는 곳이 보일 것이다. SOA 레코드 : Start Of Authority, DNS 영역을 만들때 기본적으로 등록되는 레코드, 도메인의 시작점이며 관리 권한이 시작되는 곳이다.. NS 레코드 : NameServer, 도..


이전 포스팅에서 GCP에서 VM 인스턴스를 사용하여, Docker를 이용하여, API 서버 및 데이터베이스를 구축하는 과정을 살펴보았었다. https://sjh9708.tistory.com/95 [GCP] Node.js(NestJS) 프로젝트를 Docker를 이용하여 클라우드 배포해보기 Google Cloud Platform (GCP)은 Google이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 비슷한 경쟁사로는 AWS, Azure 등이 있다. 해당 포스팅에서는 Docker를 이용하여, GCP 인스턴스에 배포하는 방법을 간략 sjh9708.tistory.com 그렇다면 이번 포스팅에서는, Docker를 이용해서는 API 서버만 구축하고, 데이터베이스를 GCP에서 제공해주는 클라우드 관리형 데이터베이스로 ..


Google Cloud Platform (GCP)은 Google이 제공하는 클라우드 컴퓨팅 서비스 플랫폼이다. 비슷한 경쟁사로는 AWS, Azure 등이 있다. 해당 포스팅에서는 Docker를 이용하여, GCP 인스턴스에 배포하는 방법을 간략하게 다루어보도록 하겠다. 물론 해당 포스팅에서 다룬 내용 이외에 GCP의 활용 가능성은 무궁무진하지만, 가장 간단하게 사용할 수 있는 방법을 소개하려고 한다. 해당 포스팅에서는 Docker에 대한 자세한 설명은 다루지 않으므로, Docker에 대해서 모른다면 블로그 내의 다른 Docker 관련 포스팅을 참고하자. 무엇을 할 것인가 간단히 말해서, 컴퓨터를 빌리고, 안에서 Docker를 이용하여 앱을 실행시키고, 네트워크를 설정시켜서 외부에서 접속 가능하게 하기! G..


이번 포스팅에서는 Spring Boot에서 Request로 Multipart 형식의 File을 받아, 서버 내부 스토리지에 저장하는 방법과, 스토리지에 저장된 파일을 Response로 출력하는 과정을 다루어보도록 하겠다. 업로드 파일 저장 디렉터리 생성 ▶ Application.java @SpringBootApplicationpublic class WisefeeApplication { @Value("${upload.directory}") private String uploadDirectory; public static void main(String[] args) { SpringApplication.run(WisefeeApplication.class, args); } @PostConstruct pub..


포스팅된 글의 인용한 모든 이미지는 CCL 라이선스의 이미지만을 사용했으며, 출처를 밝힙니다. Boosting Boosting은 여러 개의 약한 학습기(Weak Learner)를 결합하여 강한 학습기(Strong Learner)를 만드는 앙상블 기법이다.여러 개의 Weak Learner를 순차적으로 결합하여 예측 성능을 향상하면서, 모델의 오류를 보정해나간다.순차적인 앙상블 모델이다.AdaBoost잘못 분류된 샘플에 가중치를 높여서 다음 모델을 학습시키는 방식Weak Learner의 결과에 가중치를 적용하여 Strong Learner를 생성한다.Gradient Boosting이전 모델의 예측 오차에 새로운 모델을 학습시켜 오차를 줄이는 방식. Gradient Descent를 사용하여 가중치 업데이트를 ..