목록전체 글 (84)
나의 개발 일상 기록
JSESSIONID Session에 대해서 문득 궁금한 부분이 생겼습니다. 만약 사용자 A와 사용자 B가 있다고 한다면 로그인이 된 상태에서 서버는 Session의 정보에 담긴 각 사용자에 대한 로그인 아이디를 HttpSession.getAttribute("userId") 이와 같은 방식으로 정보를 조회를 하는데 과연 어떤 방식을 통해 각 사용자 Session을 구분해서 정보를 가지고 오는 걸까라는 궁금증이 생겼습니다. 구글링을 통해 JSESSIONID를 통해 각 브라우저의 Session을 구분해서 정보를 조회 할 수 있다고 알게되었습니다. JSESSIONID란? Tomcat 컨테이너에서 세션을 유지하기 위해 발급하는 키로 HTTP 프로토콜은 무상태(stateless) 하기 때문에 요청 시 마다 새로운 ..
Spring boot를 사용해서 어플리케이션을 개발하는 중 jenkins 자동 배포를 하는 과정에서 다음과 같은 에러가 나면서 build가 되지 않았습니다. 원인 시스템의 물리적 RAM 또는 스왑 공간 부족 프로세스 크기 제한에 도달 구글링을 통해 많은 다양한 해결 방법이 있다는 것을 알게 되었습니다. 그 중에서도 저는 Swap 공간을 늘리는 방법으로 접근하였습니다. Swap 파티셔닝 1. Swap 공간 확인 free -h 2. Swap 공간 확인 $ touch /var/spool/swap/swapfile $ dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024 swap 파일 생성 후 2G의 메모리를 할당하였습니다. chmod 600 /va..
FireBase를 활용한 Web Push Alarm 사전 작업 1. Firebase 프로젝트 생성 https://console.firebase.google.com/ 위의 url을 접속하여 Friebase 프로젝트를 생성합니다. 프로젝트 생성 과정은 간단하여 생략하였습니다. 2. Web 추가 아래의 그림에서 Web(3번째 아이콘)아이콘을 클릭하여 Web을 생성합니다. 내 웹 닉네임을 본인이 원하는 명으로 기입 후 앱 등록 버큰을 클릭합니다. 화면 초기 진입 시 messaging.requestPermission() 에 의해 Push 알람 권한 요청 화면이 나오게 됩니다. Token 정보 확인 개발자 도구를 열어 Console를 확인 해보시면 Token 정보가 나오게 되는 것을 확인하실 수 있습니다. Serv..
Kafka 설치 과정 정리 1. Java 8 버전 이상 설치 -> sudo yum install -y java-1.8.0-openjdk-devel.x86_64 2. Kafka 설치 및 압축 해제 -> wget https://downloads.apache.org/kafka/3.0.0/kafka_2.12-3.0.0.tgz -> tar xvf kafka_2.12-3.0.0.tgz 3. Kafka heap memory 설정 -> export KAFKA_HEAP_OPTS="Xmx400m -Xms400m" Kafka 패키지의 기본 힙 메모리 설정이 Kafka = 1G, Zookeeper = 512M 으로 설정되어 있어서 프리티어의 메모리 1G 에서는 Kafka와 Zookeeper를 동시에 실행하면 "Cannot a..
Redis 설치 과정 정리 1. Redis 설치 전 linux update를 하고 gcc make 설치 1. linux update -> sudo yum update -y 2. gcc make -> sudo yum install gcc make -y 2. Redis 설치 및 압축풀고 gcc make로 컴파일 1. Redis 설치 -> wget http://download.redis.io/releases/redis-6.2.5.tar.gz 2. Redis 압축해제 -> tar xzf redis-6.2.5.tar.gz 3. 경로 진입 -> cd redis-6.2.5 4. gcc make 컴파일 -> make 3. 디렉토리 생성 및 Redis 설정 파일 복사 1. 디렉토리 생성 -> sudo mkdir /etc..
TDD(Test-Driven-Development)란? TDD란 '테스트 주도 개발' 이라고 불립니다. 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스입니다. 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계를 중요시합니다. eXtream Programming(XP)란? 미래에 대한 예측을 최대한 하지 않고 지속적으로 프로토타입을 완성하는 애자일 기방법론 중 하나입니다. 이 방법론은 추가 요구사항이 생기더라도 실시간으로 반영할 수 있습니다. TDD 개발주기 맨 위의 그림(TDD의 개발주기)를 참..
Connection Blocked Error 현상 MySQL 서버를 평시 잘 사용을 하다 Connection을 하려고 하는데 갑작스럽게 아래와 같은 에러가 발생하였습니다. ERROR 1129(00000): Host '*' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 구글링을 통해 원인을 파악을 해보니 Host로부터 접속 요청 max_connect_errors 와 관련된 접속 연결 설정값 보다 초과하여 발생하여 설정된 값 이상의 Host에서 연결이 발생하여 MySQL에서는 해당 Host를 Block을 하게 된다는 것을 알게 되었습니다. 해결방법 1. MySQL 접속합니다. - mysql -u root ..
LOAD BALANCING 1. 로드밸런싱이란? 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율을 증가, 부하량, 속도저하 등 고려하여 분산처리하여 해결해주는 서비스입니다. 로드밸런싱(Load Balancing)을 해주는 소프트웨어 혹은 하드웨어 장비를 로드밸런서(Load Balancer)라고 합니다. 동작 방식 1. 네트워크 상단에 L4 스위치 가상서버가 존재하여 서버로 들어오는 패킷을 리얼 서버로 균일하게 트래픽을 분산 2. 서버에 장애가 발생하면 이를 감지하여 정상적으로 작동하는 서버로 트래픽을 분산 2. L4 Load Balancing L4는 L4 계층에서 동작하는 Load Balancer 이므로 네트워크 계층이나 트랜스포트 계층의 정보를 바탕으로 로드를 분산합니다. 다시 말해,, ..
Kafka Producer Application Kafak Producer는 데이터를 프로듀싱 즉 생산하는 역할을 합니다. 즉, 데이터를 Kafka Topic에 생성합니다. Producer의 역할 Topic에 해당하는 메시지를 생성 특정 Topic으로 데이터를 publish 처리 실패/재시도 gradle 설정 compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.3.0' Kafka Producer를 작성한 코드 public class Producer{ public static void main(String[] args) throws IOException{ Properties configs = new Properties(); confi..
Kafka 위키백과에서 Kafak는 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표이며 분산 트랜잭션 로그로 구성된 상당히 확장 가능한 pub/sub 메시지 큐로 정의한다고 나와있습니다. 데이터 전송하는 Source 애플리케이션과 데이터를 받는 Target 애플리케이션이 있었습니다. Source & Target 애플리케이션들이 많아지면서 데이터를 전송하는 라인이 매우 복잡해졌습니다. 데이터 전송 라인이 많아지면 배포와 장애에 대응하기가 힘들어지니다. 그래서 Apache Kafka는 이러한 복잡함을 해결하기 위해 개발되었습니다. Topic은 일종을 큐 라고 생각을 하시면 됩니다. Producer의 역할은 Topic에 데이터를 삽입을 하며 Cons..