Web Server와 WAS
·
Web
Web Server웹 서버는 HTTP 기반으로 동작하며 정적 리소스(HTML, CSS, JS, 이미지 등)를 제공한다. Web Server 구조클라이언트의 HTTP 요청에 대해서 서버에 있는 정적 리소스를 HTTP 응답한다. 대표적인 Web Server 대표적인 웹 서버로 Nginx와 Apache가 있다. WAS(Web Application Server)WAS는 HTTP 기반으로 동작하며 웹 서버의 기능을 포함한다. 추가적으로 코드를 실행해서 Application 로직을 수행하고 DB와 상호작용하여 동적 컨텐츠를 생성한다. WAS의 구조 WAS도 정적 리소스를 포함할 수 있다. 대표적인 Web Application ServerTomcat, 스프링 부트에 내장되어 있다. Web Server와 WAS(Web..
Restful API
·
Web
Restful API란 REST를 잘 준수하는 API로 HTTP 프로토콜을 사용하여 클라이언트와 서버 간의 통신을 통해 자원을 관리한다. 자원은 고유한 URI로 식별되며, HTTP 메서드를 통해 다양한 작업을 수행한다. 즉, REST 기반으로 서비스 API를 구현한 것으로 HTTP API를 잘 설계하는 규칙이라고 정리할 수 있다. REST란?REST는 Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 정보를 주고 받는 것을 의미한다. URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD에 대한 정보를 표현하는 것이다. REST API를 작성하는 방법리소스는 명사를 사용해야 한다.단수가 아닌 복수 형태를 사용해야 한다.만..
HTTP의 이해
·
Web
HTTP(Hyper Text Transfer Protocol)HTTP는 서버와 클라이언트가 서로 데이터를 주고 받기 위해 사용되는 통신 규약이다. TEXT, IMAGE, FILE, HTML, JSON 등 다양한 형태의 데이터가 HTTP를 통해 전송된다. HTTP의 진화 과정HTTP/0.9GET 메서드만 지원HTTP 헤더 없음HTTP/1.0메서드, 헤더, 상태코드가 추가됐다.요청 헤더 : http 버전이 생김응답 헤더 : 상태 코드와 content-type이 생겨 html파일 외 다른 타입의 파일도 전송단기 커넥션 : connection 하나당 1요청, 1응답만 가능HTTP/1.1현재 가장 많이 사용하며, 대부분의 기능이 추가Persistent connection : 지정한 timeout 동안 연속적인 요..
Connection과 Connectionless
·
용어 모음집
Connection과 Connectionless은 클라이언트와 서버 간의 연결(Connection) 유지 여부에 따라 나뉘는 특성이다. Connection ( 연결 )Connection은 서버와 클라이언트의 TCP/IP 연결을 끊지않고 계속해서 유지한다.  Connection 장단점장점새로운 연결 과정을 거치지 않아도 된다.그만큼 요청에 대한 응답 속도가 빨라진다.단점연결된 클라이언트가 지속적으로 요청을 보낼거라는 보장이 없다.서버는 연결을 위한 자원이 낭비된다. Connectionless (비연결)connectionless는 클라이언트와 서버가 TCP/IP 연결된 후 요청과 응답이 이루어지면 연결을 유지하고 해제한다. 서버는 연결을 위한 유지를 하지않아도 된다. Connectionless 장단점장점서버..
Stateful과 Stateless
·
용어 모음집
Stateful과 Stateless 는 클라이언트와 서버간의 통신 상태(state) 유지 여부에 따라 나뉘는 특성이다. Stateful(상태 유지)stateful은 서버가 클라이언트 상태를 유지한다. 클라이언트와 상태를 유지한다는 것은 꼭 TCP 연결이 끊어지지 않고 유지된다고만 볼 수는 없다. 클라이언트와 상태를 유지한다는 것은 서버가 클라이언트와의 상호작용에서 발생한 데이터를 서버가 기억하고 이를 기반으로 이후 요청을 처리한다는 것을 뜻이다. stateful 방식의 문제점요청을 정상적으로 처리하기 위해서는 클라이언트의 요청이 같은 서버에 유지되어야 한다. 하지만 서버는 다양한 이유로 동작하지 않을 수 있다. 또한 요청 트래픽이 몰리게되면 상태를 유지하는 것에 Resource가 많이 소모된다. 리소스가..
Scale Up, Scale Out
·
용어 모음집
Scale Up과 Scale Out의 서버의 성능 향상을 위한 두 가지 방법이다. Scale Up ( 수직적 확장 )수직적 확장은 단일 서버의 하드웨어의 성능을 높인다. ( CPU, Memory 등의 스펙을 높인다. ) 서버의 하드웨어의 성능을 높여서 요청에 대한 처리를 더욱 빠르게 처리할 수 있도록 한다. 장점단순성: 기존 시스템을 그대로 업그레이드하기 때문에 관리가 간단.빠른 성능 향상: 고성능 하드웨어로 즉각적인 성능 개선.애플리케이션 호환성: 기존 소프트웨어나 아키텍처를 크게 변경할 필요 없음. 단점비용 문제: 고성능 하드웨어는 매우 비쌈.물리적 한계: CPU 코어 수, 메모리 용량 등 하드웨어의 물리적 한계에 도달할 수 있음.단일 장애 지점(SPoF): 시스템이 중단되면 전체 서비스가 중단될 위..
JSON
·
용어 모음집
JSON 이란JSON은 JavaScript Object Notation의 약자로 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반 표준 포맷이다. JSON은 클라이언트와 서버가 통신할 때 사용하는 데이터 양식으로 쓰인다. 서버와 클라이언트가 데이터 양식을 통일시켜 서버가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있게 해준다. 💡 과거 웹 초기 시절부터 사용된 XML 데이터 양식은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 불필요한 용량을 잡아먹는다는 단점을 항상 지적받았다. 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다. 요약JSON은 사람, 기계 모두 이해하기 쉬우며 용량이 작다.XML을 대체해서 데이터 전송 등에 많이 사용한..
프로그래밍 명명규칙(Casing)
·
용어 모음집
프로그래밍 세계에서는 각각의 언어, 환경에 알맞는 명명 규칙이 존재한다. snake_case파이썬이나 DB 테이블(user_tbl, board_tbl), 컬럼(user_name, board_id)에 사용된다. 앞선 예시에서 알 수 있듯이 단어와 단어 사이에 띄어쓰기를 _ 언더바로 이어준다. 모든 문자는 소문자이거나 대문자이다.  camelCase자바에서는 변수, 메서드 이름을 만들 때 사용한다. 단어와 단어가 결합 할 때 뒤에 나오는 단어의 첫글자를 대문자로 이어준다. PascalCase대부분 프로그래밍 언어에서 클래스 이름을 지정하는데 파스칼 케이스가 사용된다. 모든 단어의 첫 문자를 대문자로 한다. kebab-case문자와 문자 사이를 - 대시로 이어준다. 모든 단어는 소문자이다. Java의 명명법종..
자바 짤막 지식 - 논리 연산, 비트 연산, 시프트 연산
·
JAVA
논리 연산과 비트 연산에서 연산자가 살짝 헷갈릴 수 있다. 한번 집어가면 좋을거 같다.시프트 연산도 논리와 산술 시프트로 나뉘어서  한 번 집어가면 좋을 것이다.논리 연산논리 연산자내용! aa가 true이면 false, false이면 truea ^ ba와 b의 XOR 연산, a,b가 같은면 falsea || ba와 b의 OR 연산a && ba와 b의 AND 연산 비트 연산비트 연산자내용~ aNOT 연산으로 1을 0으로, 0을 1로 변환a ^ bXOR 연산, 논리 연산자와 동일하다a | bOR 연산a & bAND 연산  시프트 연산시프트 연산자내용a >> b산술적 오른쪽 시프트로 최상위 비트의 빈자리는 시프트 전의 최상위 비트로 다시 채운다.a >>> b논리적 오른쪽 시프트로 최상위 비트의 빈자리는 0으로..
자바 짤막 지식 - 타입 변환
·
JAVA
타입 변환타입 변환이란 변수나 상수 혹은 리터럴을 다른 타입으로 변환하는 것을 말한다. 자동 타입 변환치환문(=)이나 수식 내에서 타입이 일치하지 않을 때, 컴파일러는 작은 타입을 큰 타입으로 자동 변환한다. 예를 들어, int는 long으로 또는 int를 double로 변환한다. 강제 타입 변환반대로 큰 타입에서 작은 타입으로 변환해야 할 때는 손실이 발생할 수 있기 때문에 컴파일러는 자동 변환 대신 컴파일 오류를 발생시킨다. 개발자가 손실을 인지하고 변환하기를 원하면 타입을 강제로 지정하여 변환시킨다. 강제 타입 변환을 캐스팅이라고도 부른다.