반응형

Programming 362

클라우드 환경 Service Discovery 개념 정리

해당 포스팅은 Spring Cloud의 Eureka, Spring Cloud Gateway 등, 클라우드 환경의 서비스 구성에 대해 공부하며 접하게 된 Service Discovery에 대한 개념 정리입니다. (프로그래밍적인 관점에서 바라본 Service Discovery에 대한 정리입니다.) 0. Service Discovery란? on-premise 서버 기반의 Monolithic Architecture의 문제점을 보완하기 위해 클라우드 환경을 이용하여 서버를 구성하는 Micro Service Architecture(MSA)가 몇 년 전부터 대세로 떠오르고 있습니다. MSA와 같은 분산 환경에서의 동작은 서비스 간의 원격 호출(API 호출)로 구성되며, 원격 호출은 각 서비스의 ip 주소와 port를..

빅 엔디언과 리틀 엔디언(Big Endian & Little Endian)

빅 엔디언과 리틀 엔디언이라는 생소한 개념을 접하며 정리한 내용입니다. 엔디언에 대해서 살펴보기 전에 비트와 바이트에 대한 내용부터 시작하여 살펴보도록 하겠습니다. 1. 비트와 바이트(데이터가 저장되는 방식) 눈에 보이지는 않지만 내부적으로 컴퓨터가 동작하는 원리는 비트(bit)라고 하는 '0'과 '1'로 표현되는 단위부터 시작됩니다. 비트는 컴퓨터가 데이터를 처리하기 위해 사용하는 데이터의 최소 단위로, 하나의 비트만으로는 많은 양의 데이터를 나타내기 부족하기 때문에 8개의 비트(bit)를 묶은 바이트(byte)라는 단위가 메모리에 저장되는 최소 단위로 정해졌습니다. (메모리 1칸은 1byte로 구성되어 있지만 실제 저장되는 데이터는 대부분 4byte 또는 8byte 크기로 구성됩니다.) 하나의 바이트..

Programming/Web 2022.11.05

스프링부트 spring-security-web을 사용한 IP 접근제어

해당 포스팅은 spring-security-web의 IpAddressMatcher와 spring의 interceptor를 활용하여 지정된 ip만 해당 서비스에 접근 가능하도록 설정하는 ip 접근제어를 구현한 내용입니다. (spring-security-web은 org.springframework.boot:spring-boot-starter-security:2.7.3에 포함되어 있습니다.) Interceptor @Component @RequiredArgsConstructor public class IpAddressAccessControlInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest..

MySQL JSON 데이터 타입에 활용되는 함수 정리

MySQL 5.7부터 DBMS 차원에서 JSON 데이터 타입이 지원되기 시작했는데요. 아래 내용은 최근 데이터베이스 쿼리에 JSON 함수를 사용해보면서 정리한 내용입니다. - JSON 타입에 저장? TEXT 타입에 저장? DB에 JSON 형식의 데이터를 저장할 때는 고려되어야 할 부분이 있는데요. 바로 해당 데이터를 저장할 컬럼의 타입으로 'JSON Type'을 쓸 것이냐, 'TEXT Type'을 쓸 것이냐, 입니다. MySQL에서 JSON Type에 데이터를 넣는 경우 내부적으로 binary 형태로 저장되며, TEXT Type에 데이터를 넣는 경우에는 string 형태로 저장되는데요. TEXT 타입의 경우에는 Type Conversion 없이 string 형태의 데이터를 그대로 전송해주면 되지만, JS..

Programming/MySQL 2022.10.29

MySQL 계정 생성 및 권한 부여 방법 정리

MySQL을 설치하게 되면 가장 먼저 사용되는 계정이 바로 root 계정인데요. root 계정의 경우 관리자 계정이기 때문에 데이터베이스에 대한 모든 권한을 가지고 있습니다. 때문에 실제 서비스에 사용되는 DB의 경우 실질적인 관리자만 root 계정을 사용하고 이외의 DB 사용자들은 용도에 맞는 권한을 부여받은 계정을 이용하는 것이 데이터베이스를 관리하는 데 있어서 좋은 방식입니다. 그러면 아래 내용을 통해 MySQL에서 계정 생성 및 권한을 부여하는 방법에 대해서 살펴보겠습니다. 1. 접속 및 Database 변경 //mysql 접속 > mysql -u root -p Enter password: //database 변경 > use mysql; //계정 조회 > select host, user, plug..

Programming/MySQL 2022.10.27

MySQL, MariaDB 데이터베이스 백업 및 복구하는 방법

최근 개발 서버 테스트 중 DB 데이터가 손실되는 문제가 발생했습니다. 데이터의 중요성은 알고 있었지만 직접적인 담당 범위가 아니라고 생각했기 때문에 백업에 대해서는 신경을 쓴 적이 없는데요. 이번 기회를 통해 MySQL, MariaDB에서 데이터베이스 백업 및 복구하는 방법과 자동 백업을 설정하는 방법에 대해 살펴보면서 정리한 내용입니다. (해당 포스팅은 mysqldump를 사용한 DB 백업 및 복구 방법에 대한 포스팅이며, 자동 백업에 대한 포스팅은 따로 작성하여 하단에 링크로 추가할 예정입니다.) mysqldump 백업에서 사용되는 mysqldump는 MySQL에서 제공하는 대표적인 덤프 프로그램이며, 논리적 덤프를 수행할 수 있는 도구인데요. 데이터베이스 전체의 덤프부터, 각 데이터베이스 단위의 ..

Programming/MySQL 2022.10.24

FTP Active Passive Mode 정리

FTP란? FTP는 파일을 전송하는 통신 규약인 File Transfer Protocol의 약자인데요. FTP 서버에 파일을 업로드, 다운로드할 수 있도록 해주는 프로토콜이며, 이는 FTP 서버와 FTP 클라이언트 간의 통신에 사용됩니다. FTP 파일 전송에는 두 개의 port가 사용되는데요. 하나는 사용자 인증 및 명령어 입력을 위한 제어 채널(Command Port)이고 다른 하나는 실제 파일 전송을 위한 데이터 채널(Data Port)입니다. 연결 방식에는 Active 모드와 Passive 모드, 두 가지 방식이 있습니다. 기본적인 동작 방식은 Active Mode이며, Active 모드의 단점을 해결하기 위해 나온 것이 바로 Passive 모드인데요. 아래 이어지는 내용을 통해서 각 연결 방식의 ..

Programming/Web 2022.10.22

Javascript 테이블 행의 값 가져오는 방법(table.rows / row.cells)

javascript에서 행의 값이 필요할 때 table.rows 함수와 row.cells 함수를 활용하여 값을 가지고 오는 코드입니다. (rows collection, cells collection) html 및 javascript 코드 중점으로 올리고 css의 경우 포스팅 맨 하단부에 추가해놓을 테니 필요하신 경우 참고 부탁드리겠습니다. First Name Last Name Phone Email Date of Birth Susan Connor (02) 338-2765 jmatman@gmail.com 01/13/1979 ... (생략) (html 코드, 단순한 테이블 구조) (행의 값을 가져오는 javascript 코드) table.rows 함수를 통해 rows collection을 가져올 수 있으며, ..

MultipartFile to File 차이점과 변환 방법(Java)

Spring에서는 클라이언트가 업로드한 File을 핸들러에서 손쉽게 다룰 수 있도록 MultipartFile 인터페이스를 제공합니다. 이렇게 업로드된 파일은 저장 또는 다른 처리를 위해 MultipartFile File 서로 간의 변환이 종종 필요한데요. 이어지는 내용을 통해서 MultipartFile과 File의 차이점 및 변환 방법을 살펴보겠습니다. MultipartFile MultipartFile interface는 Spring에서 업로드된 파일을 다룰 때 사용되는 인터페이스로 파일의 이름과 실제 데이터, 파일 크기 등을 구할 수 있습니다. /* Spring에서 MultipartFile 타입을 매개변수로 사용하기 위해서는 MultipartResolver 구현체가 Bean으로 등록되어 있어야 하는데요..

Spring Boot + GraphQL 기본적인 사용법 정리

REST를 대체한다고? GraphQL(Graph Query Language)란? 시작에 앞서 GraphQL이란 무엇인지 간단하게 살펴보면, 페이스북에서 개발된 쿼리 언어인 GraphQL은 기존에 많이 사용되던 RESTful API와는 다른 형식의 인터페이스입니다. 가장 큰 차이로는 RESTful API가 URL, Method 등의 조합으로 다양한 Endpoint를 가지는 반면, GraphQL은 단 하나의 Endpoint 만으로 데이터를 요청하고 응답받을 수 있는데요. 이 방식을 통해 기존의 RESTful API의 단점인 Over-Fetching, Under-Fetching 문제를 해결할 수 있습니다. /* Over-Fetching(오버 패칭) 오버 패칭은 클라이언트에서 데이터를 요청했을 때, 실제로 사용..

반응형