Dev/CS 32

[CS] 프록시(Proxy)란?

이번 신규 프로젝트를 진행하며 브릿지 구성 방식이었던 서버를 프록시 구성 방식으로 변경해야할 상황이 발생했다.프록시에 대해 알아보자. Proxy(프록시)는 클라이언트와 서버 사이에서 중개 역할을 하는 서버다.일반적으로 사용자의 요청을 받아 대신 서버에 전달하고, 서버의 응답을 다시 사용자에게 전달하는 방식으로 동작한다.이 방식은 보안, 캐싱, 로드 밸런싱, IP 주소 숨기기, 또는 특정 콘텐츠 필터링을 목적으로 활용된다. 프록시 서버는 여러 유형이 있는데, 각 유형마다 역할과 사용 목적이 다르다.가장 일반적인 프록시 서버 유형과 각 유형의 역할을 예시로 살펴보자. 1. 정방향 프록시 (Forward Proxy)정방향 프록시는 사용자가 외부 서버에 접근할 때 중간에 위치하여 요청을 대신 전달해주는 방식이다..

Dev/CS 2024.11.08

[서버] 스토리지 마운트 관련 부팅 순서의 중요성

재해복구훈련 진행 중 [정전 + UPS 방전] 시나리오에서 A 서버와 B(스토리지) 서비스 및 서버를 종료시킨 뒤, 재부팅 과정에서 발생한 상황이다.A 서버와 B(스토리지) 서버는 서로 다른 IP와 서버에서 동작하고 있으므로, A 서버 부팅 시 B 서버가 자동으로 마운트가 되어야 하는데 그렇지 않은 상황이 발생했다.서비스를 재시작 하는 경우는 흔하더라도 서버 자체를 재시작하는 경우는 흔하지 않다..결론부터 말하자면 A 서버가 정상적으로 B 스토리지 서버를 마운트하려면 B 스토리지가 먼저 부팅되어 있어야 한다. 부팅 순서의 중요성1.1 스토리지 서버가 먼저 부팅되어야 하는 이유연결 가능성: A 서버가 스토리지를 마운트 하려면, 스토리지 서버가 네트워크 상에서 사용할 수 있어야 한다. 스토리지 서버가 먼저 ..

Dev/CS 2024.08.20

Call by Value와 Call by Reference

CS 면접에서 자주 나오는 개념이다.위 두 가지는 함수 호출 방식의 차이점을 이해하는데 핵심적인 역할을 한다.**본문에서는 가독성을 위해 Call by Value = CbV, Call by Reference = CbR 이라고 지칭하겠습니다. Call by Value와 Call by Reference란?프로그램에서 함수를 호출할 때, 인자를 전달하는 방식에는 'Call by Value(값에 의한 호출)'와 'Call by Reference(참조에 의한 호출)' 두 가지가 있다. 이 두 방식은 함수가 인자를 처리하는 방법에 있어서 근본적인 차이가 있다. Call by Value (값에 의한 호출)Call by Value는 함수가 호출될 때 실제 인자의 값이 복사되어 함수의 매개변수로 전달되는 방식이다.이는 ..

Dev/CS 2024.07.29

SMTP 발송 vs SMTP 릴레이(Relay) 발송: 차이점과 장점

현재 운영중인 서비스 중 특정 프로세스에 접근 시 사용자 2차 인증 과정이 필요하다.현 프로세스에서 2차 인증 시, 2가지 방식으로 인증이 가능하다.1. FIDO 기반 2차 인증2. 외부 메일을 통한 OTP 인증위와 같이 2가지 방식으로 인증이 가능한데, 오늘은 2번 [외부 메일을 통한 OTP 인증] 시에 발생한 문제 사항에 대해 다루어 보려고 한다.서론현재는 OTP 인증 코드를 [일반 SMTP 발송]을 통해 처리하고 있었다.평소에는 위와 같은 방식이 문제없이 처리 되었지만, 특정 시즌이 되면 사용자가 몰리는 특성을 가진 서비스이기에 사용자가 몰릴 경우 아래와 같은 크리티컬한 문제들이 발생했다.1. 발신 서버 과부하2. 수신자 서버에서 이메일을 거부하거나 스팸으로 분류위 사항들을 개선하기 위하여 [SMT..

Dev/CS 2024.06.24

Apache-Tomcat server.xml 파일이란?

서론Apache-Tomcat은 널리 사용되는 오픈 소스 서블릿 컨테이너다.Java 기반 Web Application을 구동하는데 필수적인 역할을 한다.톰캣 설정 파일 중 하나인 server.xml은 서버의 다양한 요소와 동작을 정의하는 데 사용된다.예를 들자면 포트, 이벤트 리스터, DB 접속정보, 웹 리소스 참조경로 등 다양한 정보를 설정가능하다.그럼 server.xml에 대해서 알아보자. server.xml 위치톰캣의 server.xml 파일은 보통 conf 폴더 내에 위치하게 된다. 본론1. server는 톰캣 서버의 최상위 요소로, 서버의 전체 설정을 정의한다.- port: 톰캣이 종료 명령을 수신할 포트 번호 (기본값은 8005)- shutdown: 톰캣을 종료하기 위한 명령어 (기본값은 SHU..

Dev/CS 2024.05.16

[Library] 라이브러리 버전 업데이트

서론현재 운영서버에서 사용 중인 Apache Commons FileUpload 버전에서 보안 취약점이 발견된 것으로 확인하여 업데이트가 필요했다.운영에서 Maven과 Gradle 같은 종속성 관리 도구를 따로 사용하지 않기 때문에 직접 최신 버전 라이브러리(.jar) 파일을 다운로드하여 FTP를 통해 수정했다. 본론1. 현재 버전 확인먼저 현재 사용 중인 Apache Commons FileUpload 라이브러리의 버전을 확인한다.이것은 종속성 관리 도구 (예: Maven, Gradle)의 설정 파일 또는 프로젝트의 라이브러리 폴더에서 확인할 수 있다. 2. 최신 버전 다운로드Apache Commons FileUpload의 최신 버전을 다운로드한다.다운로드 페이지에서 직접 다운로드해 FTP를 통해 넘겨줄 ..

Dev/CS 2024.04.25

[브라우저] 크로스 브라우징

웹 개발자들은 다양한 브라우저와 기기에서 웹 애플리케이션이 원활하게 작동하도록 보장하기 위해 크로스 브라우징에 주목한다. 1. 크로스 브라우징이란?크로스 브라우징은 웹 애플리케이션이 여러 브라우저와 플랫폼에서 일관된 경험을 제공할 수 있도록 하는 웹 개발의 한 영역이다.주요 브라우저들은 각자의 표준을 따르기 때문에, 이러한 다양성으로 인해 동일한 코드가 모든 환경에서 잘 동작하지 않을 수 있다. 한국에서는 보통 크로스 브라우징 대응하는 범위는 아래와 같다.1. Chrome2. Safari3. Edge4. Samsung Internet5. Explorer 116. Android 4.4+  2. 크로스 브라우징의 중요성사용자 경험 향상: 다양한 브라우저 및 기기에서 일관된 UI와 UX를 제공하여 사용자들에게..

Dev/CS 2024.01.16

[WEB] HTTP 상태 코드

HTTP 상태 코드: 요청과 응답의 비밀번호HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 데 사용되는 프로토콜로, 서버와 클라이언트 간의 통신을 관리한다. HTTP 통신에서 상태 코드는 서버에서 클라이언트에게 현재 요청의 성공 또는 실패 여부를 알려주는 중요한 정보다. 상태 코드는 3자리 숫자로 표현되며, 각 숫자 그룹은 특정 의미를 가진다. 주요 상태 코드1xx (Informational) : 요청이 수신되어 처리중2xx (Successful) : 요청이 성공적으로 처리됨3xx (Redirection) : 요청이 완료되려면 추가적인 조치가 필요4xx (Client Error) : 클라이언트 오류, 오타 또는 잘못된 문법5xx (Server Error) : 서버 ..

Dev/CS 2023.10.19