분류 전체보기

개요 우당탕탕 환경 설정 과정EC2인스턴스의 자원 감시를 위해 모니터링 툴이 필요하다고 생각을 했다. AWS가 제공하는 CloudWatch가 있으나, 기존 로그데이터 시각화를 위한 Loki + Grafana 환경과 같이 쓰고 모니터링 서버를 따로 두기 위해 해당 기술을 선택하였다. 1. 서버의 메트릭 데이터를 뽑아야 한다. Node-Exporter를 이용. 하지만 Node-Exporter는 메트릭 데이터를 보여줄 뿐 유지를 하지 않는다.2. 데이터를 보존하지 않는 Node-Exporter의  특성을 보완하기 위해 Prometheus를 이용해 메트릭 데이터를 보존3. Prometheus에 쌓인 데이터를 시각화 하기 위해 Grafana이용환경- Ubuntu 22.04- prometheus, version 3..
VPCVPC가 뭔데!!가상 사설 클라우드(VPC)VPC는 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사한 가상 네트워크입니다. VPC를 만든 후 서브넷을 추가할 수 있습니다.-aws document- AWS에서 사용하는 나를 제외한 다른 사람들과 논리적으로 구분되고 격리되어 있는 환경을 만들기 위해 사용을 한다. 기본적으로 VPC내부에 서브넷 혹은 EC2 등이 위치하기 위해 필수적으로 필요하다 구글에 aws architecture를 검색해서 아키텍처들을 살펴보면 VPC로 감싸져 있는 걸 흔하게 볼 수 있다. VPC 생성 VPC의 IPv4 CIDR 🖥️10.0.0.0/16 CIDR 주소 VPC를 집이라고 생각을 해보자, 집 주소는 통상 부천시 중동로 122번 길 이런 식으로 돼있으나. VPC..
·Yajoba/Backend
문제상황  😡 로컬에서 개발을 할 때는 현제 프로젝트의 최상단 디렉터리에 Logback에 의한 로그 파일이 생겼음.          하지만 베포 환경에서는 로그파일이 생성되지 않는 문제점 식별 CD 파이프 라인으로 베포 후 문제 발생로그가 잘 쌓이나 확인을 해보려고 들어간 찰나.. 폴더는 만들어져 있는데 로그가 안 쌓인다.. 환경AWSEC2(Ubuntu 22.04)Docker compose 사용 문제인지 과정 1) SSH로 베포 중이 EC2인스턴스(Ubuntu)에 접근 2) 도커 컴포즈 빌드docker-compose build --no-cache 3) 도커 컴포즈 실행docker-compose up -d 4) exec사용하여 백엔드 컨테이너에 접근(알파인 리눅스)docker exec -it /bin/..
Ubuntu 실행 및 Package 업데이트 환경과 조건 - Ubuntu 이미지 Tag = 22.04- Container 이름 = server- 업데이트 이후에도 컨테이너는 실행 중이어야 합니다  기본적인 컨테이너 상태 알아보기,  1) 아무런 옵션, 커멘드를 주지 않고 컨테이너 생성만 하기 1-a) 컨테이너의 상태를 다양한 옵션으로 확인하면서 탐구하기 컨테이너 확인 옵션을 사용했을때 알 수 있는 정보들은?docker ps Status 부분을 보았을 때 Exited(0)으로 종료됨을 확인할 수 있다.docker logs  무슨 원인인지 찾아보기 위해 logs명령어를 쳐보아도 아무 일도 일어나지 않는다! Exited(0) 이 무엇을 의미하는지 찾아보자. Contianer Exit Code 톺아보기컨테이너 ..
개요Logback을 이용한 Logging과, Logging을 하기 위해 로그를 어떻게 찍어야 할지 고민했던 부분과, 로그를 찍으면서 생긴 여러 가지 트러블 슈팅들을 기록하기 전반적으로 블로그들을 많이 찾아보았지만 Logback에 대한 이론 설명이 주를 이루고 있어서 로그를 어떻게 찍어야 할지 어떻게 시작해야 할지 감이 안 왔지만 차근차근해본 과정들을 기록해 보았다!!Logback을 선택한 이유와 Logback에 대해 예시로 ProductUpdateService라는 인터페이스를 만들고 해당 인터페이스에는public interface ProductUpdatingService { void updateProductViews(Long productId); void updateProductInfo(ProductIn..
원인 Swagger에서 Multipart/form-data 형식으로 파일과, JSON을 같이 보내면 오류가 나옴. PostMan으로 똑같이 테스트할 때는 오류가 발생하지 않음.Unsupported Media Type,Content-Type 'application/octet-stream' is not supported 해결과정 왜 발생했는지 프로토콜을 분해해 보자.Swagger에서 Multipart/form-data 형식으로 API 테스트를 할 때 오류 발생, PostMan으로 똑같이 테스트할 때는 오류가 발생하지 않음. 먼저 프로토콜을 분해해 봤다. + 추가로 알면 좋을 것들.Multipart 요청은 헤더의 Boundary 값을 지정을 해주고, Boundary값을 기준으로 본문의 데이터를 Part로 나누..
개요 문제점 ProductService에  너무 많은 기능, 메서드들이 들어오게 되었고,  이로 인해 ProductService 혼자서 감당하기에는 책임들이 너무 무거워진다고 생각함. 추가로 다른 서비스에서 ProductService를 의존받아 사용하는 경우에도 상대적으로 가벼운 기능만 필요한데  너무 투머치로 모든 기능들이 보이는 거 같아서 분리를 하고 싶었고, 하나의 클래스가 너무 많은 책임을 가지고 있는 게 싫어서 퍼사드 패턴을 적용해 보기로 했다. 왜  퍼사드를 왜 적용을 하려고 했는가? 퍼사드가 무엇 ?  퍼사드의 정의처럼, 시스템의 복잡성을 감추고, 필요한 기능만 접근할 수 있도록 분리를 해보려고 한다. 분리전 클래스 상태 퍼사드 패턴과 책임분리가 적절하게 이루어지지 않던 클래스는 아래와 같다..
·Yajoba/Backend
개요문제상황 이미지 파일과 Json형식의 데이터를 같이 보내야 하는 상황에서. MultipartFile 타입의 인자를 클라이언트로 받음과 동시에 컨트롤러에서 DTO에 한 번에 맵핑시키고 싶었다. 하지만 일반적인 DTO 맵핑과 다르게 맵핑이 되지 않아 골머리를 썩고 있었다. 문제해결을 위한 사전지식 탐사 문제 해결을 위해 각 특성을 살펴보고 해결해 보겠다.RequestBody, RequestParam, RequestPart 중에 어떤 걸 골라야 할지 알아보자 RequestBody Content-Type이 application/json 인 데이터를 받을 때 우리가 통상적으로 많이 쓰는 어노테이션이다. HTTP 요청의 본문의 데이터를 DTO의 필드 값과 맵핑을 시켜줄 때 사용한다.  @Getterpublic ..
kingmusung
'분류 전체보기' 카테고리의 글 목록