반응형

이번에 면접 볼 때 나온 질문이었습니다. WAS는 톰캣을 쓰니까 알고 있었는데 Web Server를 설명하지 못해 멘탈이 나가서 알고 있던 WAS까지 설명을 못하는 참사가 발생했습니다. 다음에는 그런 실수를 하면 안 되니 저도 알아보고 다른 분들께 도움을 드릴 수 있으면 해서 간단하게 정리합니다.

 

WAS(Web Application Server)

DB 조회 및 다양한 로직 처리 요구 시 동적인 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버를 말합니다. 대표적으로 톰캣이 있습니다. WAS는 웹 컨테이너 혹은 서블릿 컨테이너로도 불리며 JSP는 서블릿으로 변환되어 동작하기 때문에 WAS 즉, 톰캣이 없으면 읽어올 수 없습니다.

 

WAS는 프로그램 실행 환경 및 DB 접속 기능을 제공하고 여러 트랜지션 관리 및 업무 처리를 위한 비즈니스 로직을 수행합니다.

 

종류 : Tomcat, JBoss 등

 

 

Web Server

웹 서버는 하드웨어와 소프트웨어로 구분됩니다. 하드웨어에서는 Web 서버가 설치되어 있는 컴퓨터를 가리키고 소프트웨어에서는 웹 브라우저 클라이언트로부터 HTTP 요청을 받고 정적인 컨텐츠(HTML, CSS 등)를 제공하는 프로그램을 가리킵니다. 웹 서버는 WAS를 거치지 않고 요청에 맞게 정적인 컨텐츠나 동적 컨텐츠 제공을 위한 요청을 전달합니다.

 

종류 : Apache, Nginx 등

반응형
반응형

자바는 현재 17버전까지 공개되었지만 자바 개발에서 아직까지 표준으로 자리잡고 있는 1.8(8버전)에서 대표적으로 어떤 기능이 추가되었는지 알아봅시다.

 

Interface 변화

자바 1.8 이전에는 Interface가 public abstract 메소드만 허용했으나 static과 default 메소드를 사용할 수 있도록 변경되어 원래 Interface는 설계도로써의 역할로 추상 메소드만 갖을 수 있었으나 default라는 키워드를 사용하여 일반 메소드도 작성할 수 있게 되었습니다.

 

 

람다식 추가

람다식이란 익명 함수(Anonymous function)을 지칭하는 용어입니다. 자바에서는 함수 대신 메소드라는 키워드를 사용하므로 이름을 갖지 않는 메소드를 가리키는데 람다를 사용하므로써 불필요한 반복문의 삭제가 가능해지고 가독성이 높아지게 됩니다. 또한 메소드를 만드는 과정 없이 한 번에 처리할 수 있어지므로 생산성이 높아지고 병렬 프로그래밍이 용이합니다. 다만, 재사용이 불가능하고 디버깅이 어려우며 람다를 남발하면 비슷한 함수가 가지는 중복성이 발생할 수 있어 코드 또한 지저분해질 우려가 있습니다.

 

// 기본 형태
Man man = (String name) -> {System.out.println("이름 : " + name);}
man.intro("루니");

// 실행 블럭 제거
Man man = (String name) -> System.out.println("이름 : " + name);
man.intro("루니");

// 단일 매개 변수는 타입 생략 가능
Man man = (name) -> System.out.println("이름 : " + name);
man.intro("루니");

// 매개 변수가 하나일 때 매개 변수를 감싸는 괄호 생략 가능
Man man = name -> System.out.println("이름 : " + name);
man.intro("루니");

// 매개 변수가 없는 람다식은 괄호를 무조건 기재
Man man = () -> System.out.println("매개변수가 없는 람다식");

 

Optional 클래스 추가

Optional 클래스가 추가됨에 따라 NullPointerException의 발생 가능성에 대한 방지를 간결하게 해결할 수 있게 되었습니다.

 

기존에 null 값을 방지하기 위하여 if문을 사용했을 때 아래와 같은 코드가 나옵니다.

 

List<String> serviceList = boardService.getList();

List<String> list = null;

if(serviceList.size() != 0) {
    list = serviceList;
}

 

하지만 Optional을 사용하여 아래 코드처럼 간결하게 처리할 수 있습니다.

 

List<String> list = boardService.getList().orElseGet(()-> new ArrayList<>());

 

반응형
반응형

IOC(Inversion of Control)

 

제어의 역전이라고 부릅니다. 객체의 생성과 그 객체들의 관리까지 모두 관리한다는 개념으로 기존 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로 간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었는데 IOC 컨테이너는 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리합니다. 이것을 제어권이 역전되었다는 의미로 IOC라고 부릅니다.

 

DI(Dependency Injection)

 

객체 자체가 아니라 프레임 워크에 의하여 객체의 의존성을 주입하는 설계 패턴인데 IOC와 연결됩니다. IOC의 제어권이 프레임워크에게 가게 되는 것은 IOC 컨테이너가 DI를 통해 주입시키는 데에 있습니다. 주입 방법에는 생성자 주입, 수정자 주입, 필드 주입 등이 있습니다.

 

AOP(Aspect Oriented Programming)

 

개발을 할 때 반복되는 작업들을 모아서 필요한 적절한 시기에 적용하는 개념으로 따로 코드를 밖에서 개발하고 프록시 개념으로 메소드가 실행되기 전, 실행된 후, 실행 시점에 따라 기능을 적용시키는 것을 말합니다.

반응형

'Java Web > 개발 지식' 카테고리의 다른 글

WAS와 Web Server 차이  (0) 2022.01.28
Java 1.8에서의 변화  (0) 2022.01.27
HTTP와 HTTPS의 차이  (0) 2022.01.26
prefix와 suffix  (0) 2021.10.20
카멜 케이스, 스네이크 케이스, 파스칼 케이스, 케밥 케이스  (0) 2021.10.01
반응형

HTTP(Hyper Text Transter Protocol)

 

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜입니다. HTTP는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로써 80번 포트를 사용하고 있으며 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며 클라이언트는 80번 포트로 요청을 보내게 됩니다. 하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이었기 떄문에 HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었습니다. 이런 문제를 해결하기 위해 등장한 것이 HTTPS입니다.

 

HTTPS(Hyper Text Transfer Protocol Secure)

 

HTTP에 데이터 암호화가 추가된 프로토콜로써 HTTP와 다르게 443번 포트를 사용하며 네트워크 상에서 중간에 3자가 정보를 볼 수 있도록 암호화를 지원합니다. 대칭키와 비대칭키 암호화 방식을 모두 사용하고 있으며 이를 통해 빠른 연산 속도와 안정성을 모두 얻고 있습니다. 먼저 서버와 클라이언트 간의 세션키 교환이 이뤄지고 여기서 세션키를 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어집니다. 문제는 이 세션키를 클라이언트와 서버가 어떻게 교환할 것인가 인데 이 과정에서는 비대칭키가 사용됩니다. 즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서는 비대칭키를 사용하며 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키를 사용합니다.

 

HTTPS 연결 과정

 

1) 브라우저(클라이언트)가 서버로 최초 연결을 시도합니다.

2) 서버는 공개키를 브라우저에게 넘겨줍니다.

3) 브라우저는 인증서의 유효성을 검사하고 세션키를 발급합니다.

4) 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송합니다.

5) 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻습니다.

6) 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행합니다.

반응형

+ Recent posts