728x90
728x90
도커 컨테이너에 대해 알아보자... alpine 으로 localhost 로 ping 을 보내는 아주 간단한 docker 컨테이너를 실행시켰다. docker ps 를 이용하면 현재 실행되고 있는 컨테이너들을 확인할 수 있다. 현재 alpine 과 rabbitmq 컨테이너가 실행되고 있는 것을 확인할 수 있다. CONTAINER ID : 컨테이너의 고유한 id 해쉬값, 실제로는 더 길지만 일부분만 표출. IMAGE : 컨테이너 생성 시 사용한 도커 이미지 COMMAND : 컨테이너 시작 시 실행 될 명령어, 대부분 이미지에 내장되어 있으므로 별도 설정이 필요 없다. CREATED : 컨테이너가 생성된 시간 STATUS : 컨테이너의 상태, 실행 중은 Up, 종료는 Exited, 일시정지 Pause PORTS..
도커에 대해 공부해보는 시간을 가지기로 했고, 개인적으로 정리한 것들을 이곳에 작성하기로 했다. 항상 도커를 사용할 때는 아래와 같은 흐름을 갖는다. 먼저 도커 CLI 에 커맨드를 입력한다. 그러면 도커 서버 (도커 Daemon) 이 그 커맨드를 받아서 그것에 따라 이미지를 생성하든 컨테이너를 실행하든 모든 작업을 하게 된다. 이미지로 컨테이너 만드는 순서 1. 도커 클라인트에서 docker run 입력해준다.! 2. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 옮겨 준다. 3. 이미지에서 가지고 있는 명령어 (컨테이너가 실행될 때 사용될 명령어) 를 이용해서 카카오톡을 실행시킨다. 도커 이미지 : 프로그램을 실행하는 데 필요한 설정들이나 종속성을 가지고 있고 쉽게 말해, 응용 프로그램을 실..
인스타그램 fake 데이터 sql 파일 위 인스타그램 데이터 파일을 다운로드 받아서 실제로 쿼리 작업을 해보자... 본인은 현재 Intelij 의 datagrip 을 사용하였고 import data from file 을 이용하여 테이블에 데이터를 마이그레이션 하였다. 문제에 대해 생각한 내 쿼리문은 맨 아래에 있다. 1. 가장 옛날에 만든 유저 5명을 찾는 쿼리문을 작성해보자 아래는 유저 테이블에 대한 정보이고, 단순히 생각하면 된다. create table users ( id INTEGER AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT NOW() ); INSERT INTO use..
mysql 을 사용하여 간단한 인스타그램 스키마를 만들어보자... mysql workbench 대신 젯브레인 사의 DataGrip 을 사용하여 작업을 했다. snippets 가 존재하여 매우! 매우! 편하게 작업을 할 수 있었다... 아직 사용하지 안았다면 적극 추천한다.... 1. ig_clone DB 를 생성 create database ig_clone; use ig_clone; 2-1. users 테이블 생성 # ------------------users------------------- create table users ( id INTEGER AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP..
Filter 란 Web Application 에서 관리되는 영역으로써 Spring Boot Framework 에서 클라이언트로부터 오는 요청(req) / 응답(res) 에 대해서 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청(req) / 응답(res) 의 정보를 변경하거나, Spring 에 의해서 데이터가 변환되기 전의 순수한 클라이언트의 요청(req) / 응답(res) 값을 확인할 수 있다. 유일하게, ServletRequest, ServletResponse 의 객체를 변환할 수 있다. 주로 Spring Framework 에서는 request / response 의 Logging 용도로 활용하거나, 인증과 관련된 Logic 들을 해당 Filter 에서 처리한다. 이를 선/후 처리 함으로써, Se..
통일된 Error Response 객체 Error Response 객체는 항상 동일한 Error Response를 가져야 한다. 그렇지 않으면 클라이언트에서 예외 처리를 항상 동일한 로직으로 처리하기 어렵다. Error Response 객체를 유연하게 처리하기 위해서 간혹 Map 형식으로 처리하는데 이는 좋지 않다고 생각한다. 우선 Map 이라는 친구는 런타입시에 정확한 형태를 갖추기 때문에 객체를 처리하는 개발자들도 정확히 무슨 키에 무슨 데이터가 있는지 확인하기 어렵다. @ExceptionHandler(MethodArgumentNotValidException.class) protected ResponseEntity handleMethodArgumentNotValidException(MethodArgu..