- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[Server] netstat 명령어 - 네트워크 통계 정보
netstat이란 network statistics의 약자 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구 netstat 옵션 -a : 현재 다른 PC와 연결(Established)되어 있거나 대기(Listening) 중인 상태 -l (listen) : 연결 가능한 상태 -t (tcp) : tcp -u (udp) : udp -p : 프로그램 이름 / PID -n (number port) : 포트 넘버 netstat field 정보 $ netstat -antplF Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - - Pro..
-
[Nginx] nginx keepalive 설정(client-nginx-tomcat)
keepalive란 서버와 클라이언트가 맺은 연결을 유지하는 방식을 의미 HTTP 트랜잭션이 완료된 후에도 클라이언트와 서버 간의 TCP 연결을 열어둔다. 클라이언트가 다른 HTTP 트랜잭션을 수행해야 하는 경우 새 TCP 연결을 만드는 대신 유휴 Keepalive 연결을 사용한다. 장점 3-way handshacking overhead 줄임 단점 메모리 사용 증가 - connection을 열고 대기 server - keepalive 설정 https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout 하위에 해당하는 server 블록에 keepalive-timeout 설정 기본값 75s 해당 값에 0을 설정하면 keepalive 기능..
-
[DOCKER] Docker restart 옵션
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다. 이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다. restart option docker run -d --restart {option} redis no Don't automatically restart the container (default) on-failure[:max-retries] container가 정상적으로 종료되지 않은 경우(exit code가 0이..
-
[NGINX] client ip설정 (proxy_set_header, remote_addr, http_x_forwarded_for, proxy_add_x_forwarded_for)
location 하위 블록에 proxy_set_header를 통해서 X-Forwarded-For, X-Real_IP와 같은 header를 세팅한다. 그러면 Tomcat과 같은 WAS Layer에서 해당 설정을 읽어서 IP 정보를 사용하게 된다. user nginx; worker_processes 2; ... http { include mime.types; upstream back-server { server 127.0.0.1:3000; keepalive 32; } ... server { ... location / { proxy_pass http://back-server; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP..
-
[Tomcat] connection, thread, keep-alive 설정 살펴보기
외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
최신 글
-
[Spring] Cache Abstraction 사용 (Redis)
Spring을 통해 WebApplication을 작성할 때 Redis를 크게 두 가지 방향으로 쓸 수 있을 것 같다. @Cacheable, @CacheEvict 등의 애너테이션을 활용한 Cache 용도 RedisTemplate를 활용한 다양한 자료구조에 데이터 관리(CRUD)먼저 Cache로 사용하는 방법을 알아보자. 의존성 implementation 'org.springframework.boot:spring-boot-starter-data-redis' Spring에서 @Cacheable, @CacheEvict, @CachePut과 같은 애너테이션을 만들어 두었고 해당 애너테이션이 어떻게 동작할지는 자신이 원하는 Cache Framework의 구현체만 주입해 주면 된다. -> CacheManage..
-
똑똑한 사람은 어떻게 생각하고 질문하는가:1장
똑똑한 사람이 질문하기 전에 생각하는 것질문을 하는 사람은 잠시 동안 바보가 되고, 질문하지 않는 사람은 평생 바보가 된다.- 공자 우리는 제대로 질문하는 법을 배우지 못했다매뉴얼의 시대, 암기식 교육 멘사는 어떻게 질문하는가?꼬리에 꼬리를 물고 집중해서 깊게 파는 것이 멘사의 질문법이라고 할 수 있다.질문을 거듭하다 보면, 표면적인 분석을 넘어서 문제나 사건의 본질에 접근하게 되는 경우가 생긴다.5 Why 기법 똑똑한 사람이 질문하기 전에 생각하는 것핵심과 맥락, 소셜 스킬남들이 못 보는 이면의 모습, 겉으로 드러난 현상에 숨어 있는 저의 등을 잘 파악하는 사람에게 똑똑하다는 표현을 쓴다.똑똑한 사람은 질문을 하기 전에 생각하는 것은 크게 보면 핵심과 맥락이다.전체 흐름의 맥락을 파악해야 핵심을 짚어내..
-
토비의 스프링 6 - DI와 디자인 패턴, 의존성 역전 원칙
디자인 패턴을 구분하는 두 가지 방식 -> Purpose, Scope그중에 중점으로 살펴볼 방식은 scope에 의한 구분 방식이다. scope는 두 가지로 나뉠 수 있다 -> 클래스, 오브젝트 클래스는 상속(inheritance)을 통한 확장성을 가진 패턴오브젝트는 합성(composition)을 이용한 패턴 대부분의 디자인 패턴은 오브젝트 패턴이다. 가능하면 오브젝트 합성을 상속보다 더 선호하라는 디자인 패턴의 기본 객체지향 원리를 따른 것이다. 오브젝트 합성을 이용하는 디자인 패턴을 적용할 때 스프링의 의존관계 주입을 사용 - 앞에 설명한 전략 패턴 또한 이에 해당 데코레이터(Decorator) 디자인 패턴오브젝트에 부가적인 기능/책임을 동적으로 부여하는 디자인 패턴- 기존의 코드는 건드리지 않고,..
-
토비의 스프링 6 - 스프링 컨테이너와 의존관계 주입
앞에서 관계 설정 책임의 분리를 위해서 도입된 ObjectFactory의 기능을 스프링의 BeanFactory가 대체한다.(https://kkang-joo.tistory.com/142) 의존관계 주입(Dependency Injection)원칙과 패턴에서 설명한 제어의 역전(IoC)은 스프링의 동작원리를 정확하게 설명하기에는 너무 일반적인 프레임워크 동작원리를 설명하는 용어이다. 오프젝트의 의존관계에 대한 책임을 외부 오브젝트가 담당하게 하는 것을 의존관계 주입(DI)이라는 새로운 용어가 제안되었다. 스프링 컨테이너애플리케이션을 구성하는 오브젝트를 만들어서 담아두고 필요할 때 사용하도록 기능을 제공 - 컨테이너 스프링 컨테이너는 Bean이라고 불리는 애플리케이션을 구성하는 오브젝트를 관리하는 기능을 담당..
-
토비의 스프링 6 - 원칙과 패턴
지금까지 스프링을 제외하고 만든 코드에서 객체지향 설계원칙과 객체지향 디자인 패턴이 어떤 것이 있었는지 알아보자 개방-폐쇄 원칙(Open-Closed Principle)(OCP)- 클래스나 모듈은 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다. 인터페이스를 이용하여 추가적인 동작을 작성하는 부분 -> 확장확장을 통해 새로 추가된 기능을 사용하기 위해서 caller의 코드가 변경되면 안 된다. -> 폐쇄 높은 응집도와 낮은 결합도(High Coherence and low coupling)- 응집도가 높다 : 하나의 모듈이 하나의 책임 또는 관심사에 집중돼 있다- 결합도가 낮다 : 느슨하게 연결되어 있다(구체 클래스에 대한 선언이 적다) 전략 패턴(Strategy Pattern)객체들이 할 수 있는..