본문 바로가기

전체 글39

ECS(Elastic Container Service) 기본 개념 최근에 모듈화 된 애플리케이션들을 Docker로 컨테이너화 하여 ECS를 통해 배포 작업을 맡아서 해보았는데 배포하기까지 정말 많은 삽질을 하였다. 어찌어찌 결국 첫 배포 성공 기념으로 ECS 기본 개념을 간략하게 정리해보고자 한다. ECS란? AWS에서 제공하는 컨테이너 관리 서비스. 컨테이너화 된 애플리케이션의 배포 및 관리를 도와주는 완전 관리형 컨테이너 오케스트레이션 서비스이다. EC2, Fargate 유형중 하나를 선택할 수 있다. 컨테이너 오케스트레이션 서비스는 ECS외에도 Docker Swarm, k8s, Nomad 등 다양한 오케스트레이션들이 존재한다. 그중 ECS서비스는 클러스터를 관리를 위한 추가적인 별도의 인스턴스 구성이 필요 없고, 클러스터에 대한 추가적인 비용도 없다. 또한 AWS.. 2022. 8. 28.
DynamoDB 기본 개념 DynamoDB의 구성 요소 DynamoDB는 AWS에서 제공하는 NoSql database 서비스이다. 테이블 : 데이터의 집합 항목 : 테이블이 갖는 row들 속성 : 각 항목은 하나 이상의 속성들로 구성된다. People이라는 테이블을 보면 PersonID라는 파티션 키 기준으로 항목들이 구성되어있다. 또한 각 항목들은 하나 이상의 속성들을 갖는다(PersonID, LastName, FirstName..). DynamoDB는 Json 파일로 저장된다. key-value형식이기 때문에 READ가 빠르다. 또한 NoSql답게 속성에 대한 확장성이 좋다. 다만 단점은 relation이 없기 때문에 update작업을 해야할 경우 여러 컬렉션에 중복되어 들어가 있을 칼럼들을 모두 작업해주어야 한다는 점과 ㅜ.. 2022. 7. 31.
스프링부트 logback 적용하기 기존에 스프링 부트 버전 업을 하면서 groovy로 작성된 logback파일을 xml으로 다시 재 작성할 일이 있었는데 직접 log 설정을 구성해본 적이 없어서 잠깐 삽질을 했었다. 기본 개념은 확실하게 알고 가자는 의미로 logback 설정 관련 개념을 간단하게 정리해보았다. 🌿 스프링부트에서 logback 사용하는 방법 스프링에서는 classpath 내에 있는 logback.xml 에서 설정을 해주는데 springboot에서는 resources 폴더 내에 설정 파일들을 관리하게 된다. 때문에 기본적으로 스프링 웹 애플리케이션이 시작되고 classpath 안에 있는 logback.xml을 읽어오는데, 이 때는 Spring이 구동되기 전이기 때문에 resources 폴더 내의 설정 파일들을 불러올 수 없.. 2022. 7. 24.
[Design Pattern] Observer Pattern 헤드퍼스트 디자인 패턴 자바 책을 읽고 정리한 글입니다. 옵저버 패턴이란? 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 상태를 알리고 내용이 갱신되는 방식이다. 일대다(one-to-many)의 의존방식을 사용한다. 주제 : 상태 값을 가지고있는 객체 옵저버 : 상태가 변경되면 주제로부터 알림을 받는 객체 → 옵저버는 주제에 의존하며 주제의 상태가 바뀌면 옵저버에게 연락이 간다. 연락 방법에 따라 옵저버의 값이 갱신될 수 있다. 기상정보 애플리케이션 예시 개요 WeatherData객체를 사용하여 현재 날씨, 기상 통계, 기상 예측 세 항목을 디스플레이 장비에서 갱신하면서 보여주는 애플리케이션을 만들어보자. 조건 1. WeatherData객체 (주제) : 기상 스테이션으로부터 기상 정보 데이터를.. 2022. 7. 10.
행위검증 vs 상태검증 (Mock vs Stub) 최근에 테스트 코드를 짜기 시작하면서, Mock 객체를 가지고 어디서부터 어디까지 활용을 해야 하는지, 그리고 왜 Mock객체를 사용하는지를 모르고 얼레벌레 코드를 짜다 보니 목적성을 잃은 의미없는 테스트케이스를 짜게 되었다. 단순히 예상한 값을 나오게 하려고 테스트코드를 짜는 데에만 집중을 한 것이다. 그치만 테스트케이스를 만드는 것도 설계가 필요하고 테스트에 대한 명확한 의도가 필요하다. 검색해보니 테스트 코드를 위한 모의 객체들은 테스트 더블이라는 집합 아래 여러가지 방법론들이 있었다. 이 중에서 대표적으로 구분되는 Mock과 Stub에 대해 핵심 내용만 간략하게 공부해보고 정리해보았다. 테스트 더블이란? 테스트 더블은 '스턴드 터블'이라는 용어에서 아이디어를 얻어서 만들었다. 말 그대로 액터가 해.. 2022. 7. 3.
Serialize & Deserialize in Java 자바에서의 직렬화 개념과 사용법을 간단하게 공부하고 정리한 글입니다. 직렬화가 필요한 이유? 데이터의 메모리 구조는 크게 2가지로 나뉜다. 1) 값 형식 데이터 : int, float, char 등 값 형식 데이터 -> 스택에 메모리가 쌓여서 직접 접근이 가능하다. 2) 참조 형식 데이터 : 배열, 클래스, 인터페이스 등 객체를 선언하면 힙에 메모리가 할당되고 스택에서 이 메모리를 참조한다. 값 형식의 데이터는 스택 메모리에 저장되기 때문에 바로바로 접근해서 가져오는 것이 가능하다. 참조 형식 데이터는 힙에 할당되어있는 메모리 번지 주소를 가지고 있는 것이라서 직접 접근이 안된다. 이때 직렬화를 하게 되면, 메모리의 주소 값이 가지는 데이터들을 값 형식(byte)으로 변환해줌으로써 직접 접근이 가능하게 .. 2022. 6. 26.
반응형