- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[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..
-
[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..
-
[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 기능..
-
[Gradle] Gradle sourceSet
gradle을 활용하여 다양한 방법으로 build를 할 수 있다. 우선, gradle build를 통해 자바 파일을 빌드하게 되면 default로 프로젝트 하위의 src/main/java 디렉터리의 파일이 target이 되어 빌드된다. 하지만, 내가 원하는 것은 그 폴더 이외의 java파일을 build하는것이다. 이 목적을 달성하기 위해서 sourceSet이라는 gradle에 기능을 찾아보고 발견한 사실을 정리해 보도록 하겠다. 기본으로 제공되는 sourceSet sourceSet 추가 gradle build시 default로 target으로 잡히도록 srcDir 추가 sourceSet 동적으로 추가 gradle build시 default로 target으로 잡히는 srcDir 동적으로 추가 sourceS..
최신 글
-
[Spring] 스프링부트 spring.factories 파일
org.springframework.boot:spring-boot-{module}.jar 파일을 들여다보면 META-INF 폴더하위에 spring.factories 파일이 존재한다.해당 파일이 하는 역할이 무엇인지, 내용들은 어떤 걸 의미하는지 알아보자. spring.factories Spring Boot는 spring.factories 파일을 통해 특정 클래스들을 자동으로 로드할 수 있다.JAR 파일 내부의 META-INF/spring.factories 경로에 위치하며, SpringFactoriesLoader가 읽어 들이는 방식으로 동작한다. 주요 역할자동 설정(Auto-Configuration)org.springframework.boot.autoconfigure.EnableAutoConfigurat..
-
[Spring] Spring Cloud Config 사용해보기 (Client)
Spring Cloud Config란구성도Spring Cloud Config 환경 구축Git Repository 설정Server Side 설정Client Side 설정 ( 이어 설명) 위의 목차에 대한 설명은 이전의 포스팅한 내용 ( https://kkang-joo.tistory.com/170 )을 참고이번 포스팅에서는 Client Side 설정을 알아보도록 하자. Client Side 설정pom.xml ( dependency 설정 ) org.springframework.cloud spring-cloud-starter-config org.springframework.boot spring-boot-starter-actuator implementation 'org.springfra..
-
[Spring] Spring Cloud Config 사용해보기
Spring Cloud Config란구성도Spring Cloud Config 환경 구축Git Repository 설정Server Side 설정Client Side 설정Spring Cloud Config란Spring Cloud Config는 분산 시스템에서 설정 정보를 외부로 분리하기 위해서 Server-Client 구조를 제공한다.Config Server를 이용하여 중앙에서 Application들의 설정을 관리할 수 있다. Spring Cloud Config의 Default 서버 설정은 GIT Repository이다. 다만, 다양한 형태의 관리 체계도 지원한다. ( git, db, file, vault, redis...) Spring Cloud Config가 필요한 이유는MSA 환경에서 여러 Servic..
-
[Java] JVM DNS Caching TTL 설정(networkaddress.cache.ttl)
도메인명에 매핑된 ip 정보가 있을 텐데 이를 캐싱처리를 하는 것이 -> DNS CachingJVM단에서 이러한 캐싱 처리를 하고 있으니 -> JVM DNS Caching VIP, GSLB와 같은 기능을 이용하는 경우 상황에 따라서VIP의 경우에는 RIP가 변경될 수 도 있고GSLB의 경우에는 매핑이나 비율이 바뀌어야 되는데 캐싱처리 영향으로 의도한 바가 정확히 동작하지 않을 수 있다.보통의 HA(high availabilty)(고가용성)을 이루기 위해 VIP, GSLB 등을 사용한다. 이러한 상황을 방지하기 위해서 TTL 설정이 필요하다. 설정 방법Java 8 버전 $JAVA_HOME/jre/lib/security/java.security8 버전 이상 $JAVA_HOME/conf/security/j..
-
[Object] 11장 : 합성과 유연한 설계
상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법이다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용(is-a관계)합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해서 부분 객체의 코드를 재사용 (has-a관계)합성은 구현에 의존하지 않는다는 점에서 상속과 다르다.합성은 내부에 포함되는 객체의 구현이 아닌 퍼블릭 인터페이스에 의존한다. 합성 관계는 객체 사이의 동적인 관계다. 상속으로 인한 조합의 폭발적인 증가기본정책과 부가정책이 있는 경우 기본 정책이 추가되는 경우에 기존에 만들어진 하나의 쌍이 하나 더 만들어지면 되겠지만..만약 부가정책이 추가된다면 엄청나게 많은 조합이 생겨나게 될 것이다이를 클래스 폭발(class explosion) 문제..