스프링 DI 컨테이너(싱글톤 컨테이너)스프링 컨테이너를 통해 사용자의 요청이 올 때 마다 객체를 생성하는 것이 아니라, 이미 만들어진 객체를 공유해서 효율적으로 재사용할 수 있게 됌 싱글톤 방식의 주의점여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지하게 설계하면 안됌무상태로 설계해야 함특정 클라이언트에 의존적인 필드가 있으면 안됌특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안됌가급적 읽기만 가능해야 함필드 대신에 자바에서 공유되지 않는 지역변수, 파라미터 등을 사용해야 함스프링 빈의 필드에 공유 값을 설정하면 정말 큰 장애가 발생할 수 있음public class StatefulService { private int price; // 상태를 유지하는 필드 ..
분류 전체보기
BeanFactory스프링 컨테이너의 최상위 인터페이스스프링 빈을 관리하고 조회하는 역할을 담당getBean() 제공 ApplicationContext빈 관리기능 + 편리한 부가 기능 제공메시지소스를 활용한 국제화 기능환경변수애플리케이션 이벤트이벤트를 발행하고 구독하는 모델을 편리하게 지원편리한 리소스 조회 XML 설정 사용// xml // userRepository // discountPolicy// 여기를 고려 BeanDefinition빈 설정 메타정보라 함class, xml, xxx 등을 읽어서 BeanDefinition을 만들고스프링 컨테이너는 BeanDefinition만 알고자 함 BeanClassName: 생성할 빈의 클래스명factoryBeanName: 팩토리 역할의 빈을 사용할 경..
1. 대답을 바꾸지 말자2. 모르는 것은 모르는 것3. 압박을 버텨라4. 공식 사이트를 봐라5. 또렷한 발음으로6. 장점 단점 차이는 필수다7. 업무를 예측하라 인성면접🔔 1분 동안 자기소개 부탁드립니다.더보기 🔔 팀원 간 의견 불일치가 생긴 경험과 해결한 경험이 있나요.더보기 🔔 본인에게 가장 큰 영향을 준 프로젝트는 무엇인가요더보기 🔔 10년 후에는 어떤 개발자가 되고 싶나요더보기 🔔 왜 프로그래밍을 시작했나요더보기 🔔 최근 읽은 기술 책은 무엇인가요더보기 🔔 본인의 강점은 무엇인가요?더보기 🔔 프로젝트 일정을 계산할 때 팁이 있나요더보기 🔔 모르는 기술의 경우 어떻게 학습합니까?더보기 🔔 리모트 워크에 대해 어떻게 생각하시나요?더보기 🔔 만약 불가능한 이슈를..
HTTP/1.0한 연결당 하나의 요청을 처리하도록 설계단점: 서버로부터 파일을 가져올 때마다 TCP의 3-way-handshake를 계속해서 열어야 하기 때문에 RTT가 증가RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간 HTTP/1.1매번 TCP 연결을 하는 것이 아니라 한 번 TCP 초기화를 한 이후에 keep-alive라는 옵션으로 여러 개의 파일을 송수신할 수 있게 바뀜문서 안에 포함된 다수의 리소스(이미지, 동영상...)를 처리하려면 요청할 리소스 개수에 비례해서 대기시간이 길어짐헤더에 쿠키 등 많은 메타데이터가 들어 있고 압축이 되지 않아 무거웠음 HOL BlockingHead Of Line Blocking네트워크에서 같은 큐에 있는 패킷이 그 첫 번째 패킷에 ..
L7 스위치애플리케이션 계층을 처리하는 기기로드밸런서, 서버의 부하를 분산하는 기기클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할시스템이 처리할 수 있는 트래픽 증가를 목표로 함 URL, 서버, 캐시, 쿠키들을 기반으로 트래픽을 분산바이러스, 불필요한 외부 데이터 등을 걸러내는 필터링 기능응용 프로그램 수준의 트래픽 모니터링 가능 L4 스위치전송 계층을 처리하는 기기스트리밍 관련 서비스에서는 사용 불가메시지를 기반으로 인식하지 못하고 IP와 포트를 기반으로 트래픽을 분산 로드밸런싱L7 스위치 : ALB(Application Load Balancer) 컴포터넌트로 로드밸런싱L4 스위치 : NLB(Network Load Balancer) 컴포터넌트로 로드밸런싱한 서버에서 장애가 생겼을 때 다..
TCP패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결을 하여 신뢰성을 구축해서 순시 여부를 확인가상회선 패킷 교환 방식 사용 가상회선 패킷 교환 방식각 패킷에는 가상회선 식별자가 포함되며모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착 3-way-handshake [1 단계]클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보냅니다.ISN은 새로운 TCP 연결의 첫 번쨰 패킷에 할당된 임의의 시퀀스 번호를 말함[2 단계]서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냅니다[3 단계]클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보냄 4-way-handshake [1 단계]먼저 클라이..
트리 토폴로지노드의 추가 삭제가 쉬우며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼칠 수 있음 버스 토폴로지중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유하는 네트워크 구성노드를 추가하거나 삭제하기 쉬움LAN에서 활용설치 비용이 적음신뢰성 우수스푸핑이 가능함... 스타 토폴로지중앙에 있는 노드에 모두 연결된 네트워크 구성노드를 추가하거나 에러를 탐지하기 쉬움패킷의 충돌 발생 가능성이 적음중앙 노드에 장애가 발생하면 전체 네트워크를 사용할 수 없고 설치 비용이 고가임 링형 토폴로지각각의 노드가 양 옆의 두 노드와 연결하여 전체적으로 고리처럼 하나의 연속된 길을 통해 통신하는 방식데이터는 노드에서 노드로 이동각각의 노드는 고리 모양의 길을 통해 패킷을 처리노드 수가 증가되어도 네트워크 상의..
프록시 패턴대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 프록시 서버서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해줌 Nginx비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버Node.js 서버 앞단의 프록시 서버로 활용 CloudeFlare전 세계적으로 분산된 서버가 있고 이를 통해 어떠한 시스템의 콘텐츠 전달을 빠르게 할 수 있는 CDN 서비스CDN (Content Delivery Network) : 지리적으로 분산된 서버들을 연결한 네트워크웹 서버 앞단에 프록시 서버로 두어 DDOS 공격 방어나 HTTPS 구축에 쓰임 CORS (Cross-Origin Re..
하드 디스크 데이터 읽을 때의 프로세스 진행 과정파일을 읽으라는 메서드를 자바에 전달파일명을 전달 받은 메서드가 운영체제의 커널에게 파일을 읽어 달라고 요청커널이 하드 디스크로부터 파일을 읽어서 자신의 커널에 있는 버퍼에 복사 (DMA에서 작업)DMA (Direct Message Access)CPU의 개입 없이 주변장치와 주기억장치와의 데이터 직접 전송자바에서는 마음대로 커널의 버퍼를 사용하지 못하므로, JVM으로 그 데이터를 전달JVM에서 메서드에 있는 스트림 관리 클래스를 사용하여 데이터를 처리 NIO (New Input/Output) / Java 4 [Java] IO와 NIO의 차이점? / IO와 NIO의 선택NIO ? 자바 4부터 새로운 입출력(New Input/Output)이라는 뜻에서 jav..
static이거 정처기 문제에 대표적으로 나오는 내용public static int value = 0a = new StaticEx();a.value++;b = new StaticEx();b.value++;c = new StaticEx();c.value++;print(a, b, c) // 3, 3, 3// 서로 다른 객체를 생성했지만 최종적으로 static 값은 3이므로 static 초기화 블록static { staticVal = "Value"; staticVal = StaticEx.staticInt;} 자주 사용하고 절대 변하지 않는 변수는 final static으로 선언하자설정 파일 정보도 static으로 관리하자코드성 데이터는 DB에서 한 번만 읽자 Static 주의해야 하는 상황publi..
Stringfinal String aValue = "abcde"for(int i = 0; i 위와 같이 테스트를 진행할 때 아래와 같이 시간이 소요가 됩니다.a95초b0.24초c0.17초 Stringabcdeabcde abcdeabcdeabcde 위와 같이 새로운 객체가 계속 생성되면서 이전 객체를 쓰레기로 만듭니다.많은 GC를 하게 하여 시간이 많이 소요됩니다. StringBuffer, StringBuilderabcdeabcdeabcde위와 같이 새로운 객체를 생성하지 않고 기존에 있는 객체의 크기를 증가시키면서 값을 더하기 때문에 시간이 조금 소요됩니다. Charsequence인터페이스구현 객체로 CharBuffer, String, StringBuffer, StringBuilder가 있음Stri..
프로파일링 툴 / APM 툴 프로파일링 툴소스 레벨의 분석을 위함애플리케이션의 세부 응답 시간까지 분석 가능메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석 가능가격이 APM 툴에 비해 저렴보통 사용자수 기반으로 가격이 정해짐자바 기반의 클라이언트 프로그램 분석을 할 수 있음 응답시간 프로파일링 기능하나의 클래스 내에서 사용되는 메서드 단위의 응답 시간 측정메모리 프로파일링잠깐 사용하고 GC의 대상이 되는 부분을 찾거나 메모리 부족 현상이 발생하는 부분을 찾기 위함 APM 툴애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적서버의 사용자 수나 리소스에 대한 모니터링이 가능실시간 모니터링을 위한 툴가격이 프로파일링 툴에 비해 비쌈보통 CPU 수를 기반으로 가격이 정해짐자바 기반의..