ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (기업프로젝트) 1 - 유라클 프로젝트 서버교육
    개발/프로젝트 2023. 10. 11. 17:49

    ■ 유라클 서버교육 

     

    *  웹 시스템 구성 요소 (WEB, WAS, DB)

    사용자에게 동적인 요청 받았을 경우 WEB 서버 -> WAS 가공 -> DB 소통

     

    * WEB과 WAS 같이 사용하는 이유는?

    :  WAS 동적이므로 오류 날 수 있다. 그럴 경우 WEB 서버에서 오류를 띄워준다. 

     

    * 도메인을 입력하면 어떤 일이 일어날까?

    도메인을 입력시 IP주소를 찾기 위해 DNS 서버에 질의하게 됨

    기본적으로 WINDOW도 설치 돼 있음

    1. DNS에서 질의하여 HOSTS 파일에 어떻게 인식할지 적혀 있다. (NAVER인지 다음인지 등등)

    2. DNS 캐쉬가 있는지 확인 (이미 있다면 캐시를 읽는다.)

    3. ISP(인터넷 서비스 프로바이더) 통신사가 가지고 있는 대역에 질의

    (IPv4주소 40억개  만들 수 있다.) 

     

    ※ DNS(도메인 네임 시스템) :  IP 주소 및 기타 데이터를 저장하고 이름별로 쿼리할 수 있게 해주는

    계층형 분산 데이터베이스

     

    Client ------> Server(세션정보 확인) -------> DB

    http 프로토콜 기반으로 한 통신 : 기본적으로 stated 해서 계속 정보 저장하지 않음

    HTTP 프로토콜이 TCP/IP 의존한다.

     

    따라서 계속 물어보는 불필요한 질문 계속 체크해야 함.

    브라우저에서는 쿠키 

    서버에서는 세션 

     

    세션에 저장된 정보를 쿠키에 저장한다. 

     

    ■ OSI 7계층

     

     

    1. 물리 계층

    : 비트로 단지 데이터 전송만 담당 / 통신케이블, 리피터, 허브

    -> 케이블, 리피터, 허브를 통해 데이터 전송한다.

     

    2. 데이터링크 계층

    : 물리계층 통해 송수신되는 정보의 오류와 흐름 관리하여 안전한 정보의 전달 수행, 프레임 단위 ,

    MAC주소 가지고 통신, 신뢰성 있는 전송을 보장하기 위한 계층,

    HDLC나 ADCCP 같은 포인트 투 포인트(point-to-point) 프로토콜 / 브리지, 스위치

    -> 

    프레임에 주소부여(MAC - 물리적주소)

    에러검출/재전송/흐름제어

     

    3. 네트워크 계층

    : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)

    이 계층은 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할이다. 

    네트워크 계층(Network layer)은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층

    데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층

    / 라우터

    -> 주소부여(IP), 경로설정(Route)

     

    4. 전송 계층

    통신을 활성화하기 위한 계층

    보통 TCP프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송을 할 수 있게 한다. 

    -> 패킷 생성(Assembly/Sequencing/Deassembly/Error detection/Request repeat/Flow control) 및 전송

     

    TCP 프로토콜(Transmission Control Protocol)

     

    OSI 계층모델의 관점에서 전송 계층(4계층)에 해당

     

    양종단 호스트 내 프로세스 상호 간에 신뢰적인 연결지향성 서비스를 제공

    - IP의 비신뢰적인 최선형 서비스에다가 신뢰적인 연결지향성 서비스를 제공하게 됨

    . 신뢰적인 전송을 보장함으로써, 어플리케이션 구현이 한층 쉬워지게 됨

     

    ※ UDP 프로토콜(User Datagram Protocol)

     

    전송 계층의 통신 프로토콜의 하나 (TCP에 대비됨)

    - 신뢰성이 낮은 프로토콜로써 완전성을 보증하지 않으나,  

    - 가상회선을 굳이 확립할 필요가 없고 유연하며 효율적 응용의 데이타 전송에 사용

     

    5. 세션 계층

    데이터가 통신하기 위한 논리적인 연결을 말한다. 

    세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능이 있다.

    이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.

     

    -> 

    통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룬다. 

    통신을 하기 위한 세션을 확립/유지/중단 (운영체제가 해줌)

     

    6. 표현 계층

    데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화 한다.

    표현 계층(Presentation layer)은 코드 간의 번역을 담당하여

    사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다.

    MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 

     

    -> 사용자의 명령어를 완성및 결과 표현. 포장/압축/암호화

     

    7. 응용계층

     HTTP, FTP, SMTP, POP3, IMAP, Telnet 등과 같은 프로토콜이 있다. 

     

    응용 계층(Application layer)은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 

    일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 

    응용 서비스의 예로, 가상 터미널(예를 들어, 텔넷), "Job transfer and Manipulation protocol" (JTM, 표준 ISO/IEC 8832) 등이 있다.

     

    -> 네트워크 소프트웨어 UI 부분, 사용자의 입출력(I/O)부분

     

     

    유라클 업무 : PUSH 기능 -> 단말기

    네트워크, 인프라 지식 많이 필요

     

    FCM

    APNS

     

    제품 자체 서버 여러개 가동된다. 

    프로토콜 : 너와 나의 약속

     

    S/W 

    1. User mode : CMD 창에 치는 것, 

    2. Kernal mode : 운영체제 내부적으로 실행되는 것

     

    H/W

     

    노트북 2개의 IP 가질 수 있는 환경 : 유선, 공유기

    NIC 에서 사용하는 계층 MAC 주소(절대 변하지 않는 주소) 2계층 통신

    IP 주소는 도로명 주소 같은 것

     

    3,4계층

    TCP/IP

    UDP

     

    HTTP(메시지 정보) -> TCP/IP 통해서 

    TCP/IP 헤더를 붙임(IP주소+포트번호)

    포트번호로 어떤 애플리케이션인지를 구분

    IP 주소로 하는 이유 : 빨리 하려고 / 대역폭을 물어보고 그다음에 물어보기 (라우터가 그걸 해줌_3,4계층) 

    스위치 1,2 계층

     

    공유기(라우터 + 스위치)

    : 네트워크 IP 주소를 가지고 대역폭으로 물어보기 => 라우터

    실제로 물리적 장소 찾기 (MAC 주소) => 스위치

     

    PC

    사설IP 중복 가능

    공인IP Unique IP

    유동IP IP가 계속 바뀜

    고정IP 

     

    공인IP는 주로 고정IP 로 씀 EX) NAVER DNS

    NAT : 네트워크 주소 변환

    PC -> 라우터 -> 네트워크 

     

    * Spring Framework

    - 자바의 다형성을 지원하기에 최적화 

    - 많이 사용해서 커뮤니티 

     

    * interface

    : 운전방법 규격화 , 즉 인터페이스만 규격화 하면 다른 것 신경 안써도 된다.

    이런 다형성을 최적화한 게 Spring Framework 이다. 

     

    * 라이브러리와 프레임워크 차이

    - 개발자가 개발할 수 있는 환경을 구축한 것 : 프레임워크

     

    @Autowired 의존성 주입

    컨테이너 안의 BEAN을 관리한다.

     

    람다 함수 : 코드 가독성 높아진다.

    stream 한 번 해보기

     

    was 서버 위에서 web applicatino 이 작동된다.

    요청은 멀티스레드 형식으로 받는다.

     

     

    객체지향프로그래밍 하는 이유는?

    현실에서의 모든 문제 객체로 표현하고 사람에게 가장 가까운 언어

     

    개발에 대한 명확성 

    데이터에 대한 관계성 파악이 중요

    이 코드가 어디에 있어야 하는지 파악

     

    정적바인딩

    동적바인딩

     

    STATIC 은 정적바인딩에 해당되고, 실행 이전에 값이 확정된다.

    제어의 역전 : 3가지

     

     

    Spring Framework : 빈을 관리하는 컨테이너

    Bean Controller : 스프링 loc를 담당하는 핵심 컨테이너 빈 등록/생성/조회/반환/관리

     

    * AOP 들어보기

     

     

    docker 

    쿠버네티스 (k8s, Kubernetes, 큐브, kube)는 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼

     

    * process / thread 차이

    리눅스 process

    윈도우 thread

     

    가상화 : disk가 하나지만 가상 서버로 서버가 있는 것처럼

    cpu : 연산처리장치

    ram : 저장장치

     

    process는 thread 하나는 무조건 가짐

    docker : 이미지화해서 이미지(=컨테이너)를 띄움 / 유지보수 용이

    쿠버네티스 : pod 가 최소 단위

     

    하이브리드 앱 : 웹 + 네이티브 앱의 장점을 가져감, 

    네이티브 앱 : 앱으로 구동

    웹 뷰 : 웹으로 만들고 앱처럼 보이게 함.

     

    RESTFUL 알아보기

    1. 하이브리드 앱 환경 제공

    2. PUSH 발송할 수 있는 환경 제공

    - Android : FCM 제공하는 라이브러리 이해하고 XMPP HTTP2 

    - IOS :

     

    *생성자 주입

    생성자 함수를 사용하면 바로바로 오류 알 수 있다. 

    순환참조 시에 오류가 뜨기 때문이다.

     

    필드주입(@Autowired)

     

    ■ AOP (관점 지향 프로그래밍)

    AOP를 통해 OOP 객체 지향을 보완해준다. 

    핵심적인 관점과 부가적인 관점을 나눈다.

    공통적인 것은 모듈화하고 핵심적인 비즈니스는 로직에서 분리해서 재사용하겠다는 취지이다.

     

     

    파티셔닝

    datetime : 다르지 않음

    timestamp : 명확한 기준이 위치에 따라 달라짐

    -> 따라서 timestamp 로 하면 안된다. 

     

    ■ Spring Bean Scope (중요)

    1. Singleton : 하나의 빈 정의에 대해 Spring IOC Container내에 단 하나의 객체만 존재

    2. Prototype : 다수의 객체가 존재 가능

     

    ■ Thread-safe

    ConcurrentHashMap(동기화) Hashmap(비동기)

    따라서 ConcurrentHashMap 를 쓴다. 

     

    생체데이터는 언제든 데이터가 추가될 수 있기 때문에 NoSQL(캐시성으로 데이터 쌓기) 로 하는게 더 적합한데,

    RDBMS(목적이 안정성 있게 하는 것) 로 해서 목적성이 달라 프로젝트 시 어려웠다.

     

    단순 데이터 조회 GET : Query parameter 헤더 key value

    값 담을 게 많다. : 메세지 바디에다 담는다.

     

     

     

     

     

     

Designed by Tistory.