본문 바로가기

전체 글

(47)
[Docker] 도커란 무엇인가? 그리고 컨테이너, 이미지 핵심 개념 정리 도커란 무엇인가?기본 개념은 컨테이너(리눅스 컨테이너) 생성 및 관리 도구이다.그냥 일단은 간단하게 독립된 환경에 애플리케이션과 그가 동작하기 위한 모든 것을 묶어두기 위해 사용되는 기술이라 생각하자.도커를 쓰는 이유?먼저 다음과 같은 상황이 있다고 생각해 보자.다양한 의존성이 있는 개발 환경에서 개발을 했고 이제 서버에 배포만 할 일이 남아있다. 내가 로컬에서 돌릴 때 사용했던 애플리케이션들과 의존성을 서버에도 전부 설치를 해야 되는데 일일이 다 설치할 것인가?개발자 여럿이서 하나의 프로젝트를 진행하는데 각 개발자 마자 버전이 일치하지 않는 경우 동일한 버전으로 전부 맞춰야 한다. 일일이 맞출 것인가?이와 같은 상황은 개발 환경이 로컬 개발 환경에 의존되어 있고 이를 다른 곳에서 돌릴 때 환경이 불일치..
Docker 빌드 후 이미지 찾기 도커 공부를 하려고 강의를 듣는데강의 영상에는 도커 빌드 후에 콘솔 마지막 줄에 Successfully built + Docker Image ID 가 표시되었는데 나는 그런 로그가 안뜬다..자 그러면 내가 빌드한 이미지 파일을 찾는 방법을 알아보자. 다음과 같은 명령어를 통해 빌드된 이미지들의 목록을 확인할 수 있다.docker images 내가 빌드한 도커 이미지 파일을 찾았다. 도커 빌드를 할 때 -t 옵션을 이용하여 네임 태그를 달 수 있는데 앞으로는 달도록 하자..
[AWS] S3 Transfer Acceleration 📌 S3 Transfer Acceleration 이란?클라이언트와 S3 버킷 간의 장거리 파일 전송을 빠르고 쉽고 안전하게 전송할 수 있는 버킷 수준 기능Amazon CloudFront에서 전 세계에 분산된 엣지 로케이션을 활용하여 최적화된 네트워크 경로를 통해 S3로 라우팅Transfer Acceleration을 사용하는 이유전 세계 각지에서 중앙의 버킷으로 업로드하는 고객이 있는 경우AWS SAA 시험에도 해당 내용이 적용되는 문제가 있다.A company collects data for temperature, humidity, and atmospheric pressure in cities across multiple continents. The average volume of data that t..
[데이터베이스] 제약조건 NOT NULL과 DEFAULT 두 개를 같이 써야 할까? 🤔 의문나는 대부분 프로젝트를 진행하면 각 DB Column 들의 제약 조건에 웬만하면 NOT NULL을 붙인다. 그러다가 DEFAULT 제약 조건을 적용할 일이 생겨서 DEFAULT를 붙이고 보니 NOT NULL과 DEFAULT가 공존했는데, 대충 봤을 때는 DEFAULT가 있는데 NOT NULL이 동작할 일이 없지 않나? 하는 의문이 들었다. NULL은 상당히 민감한 문제이기에 NOT NULL을 제거할까 하다가 조금 더 알아보니 NOT NULL도 필요하다는 것을 알 수 있었다.NOT NULLNOT NULL 이란 이름 그대로 NULL 값이 들어오면 오류를 발생시킨다.NULL 값이 들어오는 상황에는 무엇이 있을까?사용자가 해당 속성의 값을 입력하지 않은 경우. ( 이는 DEFAULT 제약이 있다면 해결..
[금융/백엔드(Spring)] 은행을 만들어보자! - Joon Bank 요구사항 정의 및 설계는 다음 노션에 정리되어 있다.-> Joon Bank Notion  개발이 진행됨에 따라 글은 실시간으로 업데이트될 예정이다.💁‍♂️ 소개은행의 기능을 구현해 볼 생각이다.기능은 다음과 같은 핵심 기능만을 구현할 예정이다. ( 핵심 기능 구현 이후 서비스 기능들 추가 예정 )입금/출금송금거래 내역 관리계좌 관리 ( 계좌 등록, 삭제, 추가 )관리자 페이지 ( 전체 입출금 및 송금 내역 조회 )기능은 적되 보안성, 가용성, 확장성 측면을 중심으로 구현할 계획이다.모놀리식으로 개발을 하되, 향후 MSA로 전환 가능성을 열어두고 그에 맞춰 개발을 할 계획이다.고민과 해결빈번한 하루 잔여 이체 한도 조회일단, 하루 잔여 이체 한도 조회가 이루어지는 방식을 살펴보자. 계좌의 테이블에는 해당..
MySQL 사용자 관리(생성, 권한, 조회, 삭제) 명령어 정리 매번 헷갈리고 검색하기 귀찮아서 정리함💁‍♂️ MySQL 사용자 관리사용자 생성사용자 권한 부여사용자 권한 삭제사용자 권한 조회사용자 조회사용자 삭제📌 사용자 생성CREATE USER '사용자명'@'접근위치' IDENTIFIED BY '비밀번호'; 접근위치의 종류localhost % ip ex) CREATE USER 'joon'@'localhost' IDENTIFIED BY 'qwer1234@'; + 여러 ip에 대한 접근 허용은 '/'를 이용한 ip 나열 ex) 1.1.1.1/2.2.2.2또는 wildcard % 기호로 여러 대역폭 허용 가능 ex) 192.168.0.% or 192.168.% 와 같이 사용(CIDR 방식은 지원하지 않음)📌 사용자 권한 부여GRANT 권한 ON 데이터베이스.테이블..
[Spring] Spring Interceptor란 무엇인가? 스프링 인터셉터(Spring Interceptor)란?Controller의 Handler 호출 전/후/실행 후로 요청과 응답을 낚아채서 처리를 하는 인스턴스다.보통 인터셉터가 필요한 경우는 특정 핸들러가 실행되기 전에 처리해야 될 로직(예를 들면 로그인 체크) 또는 컨트롤러 실행 이후 예외 처리와 같은 작업을 할 때 사용한다. 이와 비슷하게 공통 로직을 처리하는 친구들로 AOP와 Servlet 필터가 있다스프링 인터셉터 동작 과정MVC 동작 과정 중 preHandle, postHandle, afterCompletion 이 세 가지가 인터셉터가 동작할 수 있는 위치이다.각각 Dispatcher Servlet과 컨트롤러 사이에서 컨트롤러 호출 전/후로 그리고 뷰 리졸버를 통한 뷰 렌더링 이후에 동작한다.* ..
[Spring] Dependency Injection의 세 가지 방법 지금까지 나는 DI를 필드 주입을 통해서만 진행해왔다. (가장 간단하였기 때문이다..)근데 DI에 대해 공부를 좀 하다 보니 필드 주입은 지양해야 되는 방법이라는 것을 알게 되었다.!그러면 지금부터 왜 필드 주입은 지양해야 되는지, 그리고 나머지 의존성 주입 방법들은 무엇이 있는지 한번 알아보자.결론부터 말하자면 생성자 주입을 사용하는 것이 정배이다.의존성 주입의 세 가지 방법필드 주입 ( 비추천 )수정자 주입생성자 주입 ( 추천 )왜 필드 주입은 별로인가?필드 주입이란 그냥 @Autowired 애노테이션을 이용해서 스프링 IoC 컨테이너로부터 의존성이 주입되는 방식이다.이거는 그냥 쓰지 말자. Spring 공식 문서에도 언급되지 않는 방법이다.public class Controller { @Autowi..