본문 바로가기

분류 전체보기240

[Network] 웹 통신의 큰 흐름 웹 통신의 과정 사용자가 웹 브라우저를 통해 URL을 입력한다 입력된 URL 중 도메인 네임을 DNS 서버에서 검색한다 DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달한다 웹 페이지 URL 정보와 전달받은 IP 주소를 이용해 HTTP 요청 메시지를 생성한다 요청은 TCP를 통해 서버로 전송된다 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환되어 서버에 전송된다 서버는 클라이언트의 요청을 받고 응답을 전송한다 웹 페이지 URL 정보에 해당하는 데이터를 검색하고, HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성하고 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다 도착한 HTTP 응답 메시지는 H.. 2021. 8. 31.
[OS] 시스템 호출(System Calls) 시스템 호출(System Calls) 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동된다. 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많은 부분이 커널 모드를 사용한다. OS는 다양한 서비스들을 수행하기 위해 하드웨어를 직접적으로 관리한다. 이와 반면 응용 프로그램은 OS가 제공하는 인터페이스를 통해서만 자원을 사용할 수 있다. OS가 제공하는 이러한 인터페이스를 시스템 콜(System Call) 라고 한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수 있게 해준다. 시스템 콜을 편하게 사용하기 위한 수단.. 2021. 8. 31.
[JPA] 즉시 로딩, 지연 로딩 | FetchType.EAGER, FetchType.LAZY 즉시 로딩 FetchType.EAGER 연관된 엔티티를 즉시 조회한다. 하이버네이트는 가능하면 SQL 조인을 사용해서 한 번에 조회한다. 즉시 로딩을 사용하려면 @ManyToOne의 fecth 속성을 FetchType.EAGER로 지정한다. @ManyToOne(fetch = FetchType.EAGER) JPA 구현체는 즉시 로딩을 최적화하기 위해 가능하면 조인 쿼리를 사용한다. 하이버네이트는 가능하면 SQL 조인을 사용해서 한 번에 조회한다. 주의점 컬렉션을 하나 이상 즉시 로딩하는 것을 권장하지 않는다. 컬렉션과 조인한다는 것은 데이터베이스 테이블로 보면 일대다 조인이다. 예를들어, A 테이블을 N, M 두 테이블과 일대다 조인하면 SQL 실행 결과가 N*M이 되면서 너무 많은 데이터를 반환할 수 있.. 2021. 8. 31.
클라우드를 제어하는 API의 동작 방식 목차 3장 API가 무엇인지 웹 기술 배경 지식 HTTP 가상화 기술과 클라우드 컴퓨팅 SOA 웹 API의 구성 요소 리소스 액션 도메인 DNS 엔드포인트 ROA 클라우드를 제어할 수 있는 사용자 인터페이스 API CLI SDK 콘솔 4장 물리적 서버 vs 서버 가상화 서버 가상화 vs 클라우드 3장 API(Application Program Interface, 애플리케이션 프로그램 인터페이스) 어떤 소프트웨어에서 다른 소프트웨어를 제어하기 위해 미리 약속된 인터페이스나 규약을 의미한다. API를 사용하면 똑같이 반복되는 소스 코드의 중복을 없애면서 표준화를 꾀할 수 있다. 소스 코드의 재사용성을 높여 개발 생산성을 올리는 효과를 내기도 한다. 웹 API 클라우드에서는 웹 API를 사용하는 것이 일반적인.. 2021. 8. 26.
[Java] GC 방식 JDK 5.0이상에서 지원하는 GC 방식에는 네가지가 있다. WAS나 자바 애플리케이션 수행시 옵션을 지정하여 선택할 수 있다. 4가지 GC(가비지 콜렉터) 방식 Serial GC (시리얼 콜렉터) Parallel GC (병렬 콜렉터) Parallel Compacting GC (Parallel Old GC, 병렬 컴팩팅 콜렉터) Concurrent Mark-Sweep GC (CMS 콜렉터) Garbage First GC (G1 GC) JVM GC 동작 순서 요약하면 GC 동작은 아래 3 STEP으로 나눠진다. Heap 영역에 존재하는 객체들에 대해 접근 가능한지 확인한다. GC Root에서 부터 시작하여 참조값을 따라가며 접근 가능한 객체들에 Mark하는 과정을 진행한다. Mark 되지 않은 객체 즉, .. 2021. 8. 25.
[Network] DNS round robin HTTP 통신에서는 폭주하는 부하를 분산하기 위해 DNS 라운드 로빈같은 로드 밸런싱 기법을 사용한다. 서버가 두 대 이상으로 로드 밸런싱이 되면 클라이언트가 이전에 접속했던 서버에 다시 접속한다고 반드시 보장할 수 없기 때문에 클라이언트가 앞서 요청을 보낸 웹 서버에 지속적으로 요청을 보낼 수 있도록 만드려면 HTTP의 쿠키(cookie)나 킵얼라이브(keep alive)라는 기술을 사용해야 한다. DNS 도메인과 IP 주소 사이의 변환 기능을 해주는 것이 DNS(Domain Name System)이다. 정방향 조회 : 도메인으로 IP 주소를 알아내는 것 역방향 조회 : IP 주소를 사용해서 도메인을 알아내는 것 클라우드 환경에서는 주로 정방향 조회가 많이 사용된다. DNS round robin IP .. 2021. 8. 25.
[Web] 스크래핑 vs 크롤링 스크래핑(Scraping) 웹 사이트 상에서 원하는 정보를 추출하는 기술 스크래퍼는 특정 웹 사이트 또는 페이지에서 특정 데이터를 추출하는 프로세스이다. 스크래핑을 수행하기 위해서는 먼저 필요한 정보를 찾기 위해 웹 크롤링 같은 작업을 수행해야 한다. 즉, HTTP를 통해 웹 사이트의 내용을 추출하여 원하는 형태로 가공하는 것이다. 쉽게 말해 웹 사이트의 데이터를 수집하는 모든 작업을 뜻한다. ex) 주식 시장 데이터, 비즈니스 리드, 공급업체 제품 크롤링도 일종의 스크래핑 기술이라고 할 수 있다. 크롤링(Crawling) 웹 크롤러(자동화 봇)가 일정 규칙으로 웹 페이지를 브라우징 하는 것 크롤러란 조직적, 자동화된 방법으로 월드와이드 웹(WWW)을 탐색하는 컴퓨터 프로그램이다. 크롤링은 크롤러가 하는.. 2021. 8. 24.
[OS] 프로세스 주소 공간 Code(Text) 우리가 작성한 소스코드가 들어 가는 부분. 즉, 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code)영역 이라고도 부른다. 코드영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등 함수에 대한 기계어 코드가 여기에 지정된다. 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only 로 지정돼있다. Data 프로그램의 초기값 있는 전역 변수, 배열, 정적(static) 변수가 저장되는 영역이다. 즉, 프로그램이 구동되는 동안 항상 접근 가능한 변수가 저장되는 영역이다. 전역변수, static 값을 참조한 코드는 컴파일 하고 나면 Data 영역의 주소값을 가르키도록 바뀐다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 .. 2021. 8. 23.
[OS] 인터럽트 운영체제와 하드웨어 간의 상호동작(폴링) 운영체제는 레지스터(상태, 명령, 데이터 레지스터)를 읽고 쓰는 것을 통해 하드웨어 장치의 동작을 제어할 수 있게 된다. 상태(Status) : 하드웨어 장치의 현재 상태를 읽을 수 있는 레지스터 명령(Command) : 하드웨어 장치가 특정 동작을 하도록 요청할 때 사용 데이터(Data) : 하드웨어 장치에 데이터를 보내거나 받거나 할 때 사용 운영체제와 하드웨어 장치 간에 폴링을 통한 상호작용은 다음과 같다. 폴링(Polling)을 한다. 폴링(Polling) : 운영체제가 하드웨어 장치의 상태 레지스터를 읽음으로써 명령의 수신 여부를 주기적으로 확인하는 것이다. 즉, 하드웨어장치의 상태를 수시로 체크하여 명령을 받을 수 있는지 확인하는 것을 말한다. 운영체제.. 2021. 8. 23.