본문 바로가기

분류 전체보기

(47)
HTTP 기본 HTTP(HyperText Transfer Protocol) 네트워크 상에서 자원을 전송하는 방식에 대한 표준 HTTP 메시지에 모든 것을 전송 HTML, TEXT, Image, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터 전송 가능 서버 간 데이터를 주고 받을 때도 대부분 HTTP 사용 HTTP 역사 HTTP/0.9 (1991) : One-Line Protocol. GET 메서드만 지원, HTTP 헤더 X HTTP/1.0 (1996) : 버전 정보 명시. 메서드, 헤더 추가. 응답에 Status Code 추가 HTTP/1.1 (1997) : The Standard Protocol. 명확해진 정의와 뛰어난 확장성 RFC2068 (1997) -> RFC2616 (1999) -> RF..
URI, URL, URN URI (Uniform Resource Identifier) 네트워크 상의 자원을 식별하는 식별자 Uniform : 리소스를 식별하는 통일된 방식 Resource : 자원. URI로 식별할 수 있는 모든 것(제한 없음) Identifier : 다른 항목과 구분하는데 필요한 정보 URN (Uniform Resource Name) 리소스의 이름 리소스의 위치는 변할 수 있으나 이름은 변하지 않기에 영속성을 지님 그러나 URN만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않았다 Ex) urn:isbn:9788982814471 URL (Uniform Resource Locator) 리소스가 있는 위치를 지정. 흔히 알고 있는 Web Address가 일반적. scheme : 주로 프로토콜 사용 어떤 방식으..
TCP/IP 프로토콜 프로토콜 계층 IP (Internet Protocol) 두 컴퓨터가 서로 통신할 때 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 패킷 포함 정보 : 출발지 IP, 목적지 IP, 기타 ... 이 패킷에 전송 데이터를 담아서 보내면 인터넷망 상의 수많은 노드를 거쳐 목적지로 전달됨 클라이언트와 서버가 요청과 응답을 주고 받을 떄는 서로 다른 경로를 이용할 수 있음 IP 프로토콜의 한계 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안 오면? 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? TCP (Transmission Control ..
[K8S] timezone 설정 애플리케이션 로직 중 localtime으로 파일명을 설정하여 반환하는 코드가 있는데, local에서는 현시각으로 잘 동작했으나 배포 후에는 시간이 다르게 나오는 현상이 발견되었다. 이는 GKE의 Container-Optimize OS가 기본적으로 UTC를 사용하기 때문인데, GCP는 다른 시간대에서 실행되는 작업자 노드로 인해 문제가 발생할 수 있기 때문에 호스트 OS자체의 시간대는 변경할 수 없다고 안내하였다. 따라서 deploy 매니페스트에서 내부 container의 timezone 직접 설정해줌으로써 해결해주었다. spec: containers: - env: - name: TZ value: Asia/Seoul image: my-image
CrashLoopBackOff error 1 - exec user process caused “exec format error” 도커 이미지를 GKE에 배포하였으나 pod가 CrashLoopBackOff 상태로 실행되지 않았다. kubectl logs pod/ 명령어로 CrashLoopBackOff 오류가 발생한 pod의 log를 확인해보니 exec user process caused “exec format error” 와 같은 오류 메시지를 발견할 수 있었다. 원인을 찾아보니 이는 M1 mac 을 사용하는 사람들에게 발생하는 오류임을 알 수 있었다. m1 mac을 사용하는 경우 docker build image의 기본 설정은 arm64이다 허나 kubernetes의 클러스터는 amd 기반이기 때문에 오류가 발생하는 것이다 docker buildx Multi-Architecture 빌드를 지원하는 docker CLI 플러그인 도커..
[Nginx] 페이지 새로고침 시 404 Not Found error Vue 애플리케이션을 nginx 웹서버에 올려 생성한 docker 이미지를 배포했더니, 새로고침을 했을 때 nignx에서 404 Not Found 페이지를 반환하였다. Nginx config nginx의 default config를 살펴보면 다음과 같은 설정이 있다. location / { ... try_files $uri $uri/ =404; } 'https://example.com/something '으로 요청을 보내면, nginx는 root 디렉토리에서 something.html 파일을 찾는다. 없으면 404error를 반환한다. Vue와 같은 SPA에서는 해당 파일이 존재하지 않으므로 404 Not Found 페이지를 반환하는 것이다. 해결방법 프로젝트 하위에 새로운 nginx.conf를 만들고 ..
Transaction 트랜잭션이란 트랜잭션 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위 하나의 거래를 안전하게 처리하도록 보장 하나의 거래가 처리되는 과정에서 하나라도 실패가 일어날 시 거래 이전의 상태로 되돌아가도록 한다 Commit : 모든 작업이 성공해서 데이터베이스에 정상 반영하는 것 Rollback : 작업 중 하나라도 실패해서 거래 이전으로 되돌리는 것 트랜잭션 ACID 1. 원자성 (Atomicity) 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업처럼 모두 성공하거나 모두 실패해야 한다 2. 일관성 (Consistency) 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다 3. 격리성 (Isolation) 동시에 실행되는 트랜잭션들이 서..
[DB] JDBC, Connection Pool, Datasource 이해 과거에는 애플리케이션이 데이터베이스에서 데이터를 가져오는 과정이 커넥션을 생성하고 SQL을 전달, 그리고 결과를 응답받는 3단계에 걸쳐 이루어졌다. 그러나 이런 방식에는 데이터베이스를 다른 종류로 변경할 경우 애플리케이션 서버의 데이터베이스 관련 소스코드도 변경해야 한다. 개발자가 각각의 데이터베이스 종류마다 커넥션 연결, SQL 전달, 결과를 응답받는 방법을 새롭게 학습해야 한다. 와 같은 불편함이 있었고, 이에 따라 JDBC 라는 자바 표준이 등장하게 되었다. JDBC (Java Database Connectivity) 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공 JDBC 표준 인터페이스 java.sql.Connection : ..