[Kubernetes] 쿠버네티스
·
Programming/Kubernetes
들어가기 앞서, 이 글은 도커(Docker) 및 컨테이너 배포에 대한 기본적인 이해를 전제로 작성되었습니다. 도커와 관련된 자세한 설명은 여기에 모두 정리해 두었으니, 참고해 주시면 좋겠습니다.  ✅ 쿠버네티스 (Kubernetes, k8s)쿠버네티스는 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 오픈 소스 플랫폼이다. 컨테이너 오케스트레이션 도구로서, 애플리케이션의 확장, 배포, 운영을 자동화한다.오케스트레이션: 여러 개의 컨테이너 또는 서버를 효율적으로 관리하고 작업을 의미한다. 주요 역할은 애플리케이션이 여러 컨테이너로 구성되어 있을 때, 각각의 컨테이너를 배포, 스케일링, 업데이트, 복구하는 것을 자동화한다. ▶ 쿠버네티스의 등장 배경도커의 등장으로 컨테이너 기반 배포 방식이 보편화되었고, ..
[Docker] 도커
·
Programming/Docker
✅ 배포 방식의 변화 과정▶ 전통적 배포 (Traditional Depolyment)구성: 하드웨어 -> 운영체제 -> 애플리케이션설명: 물리적인 컴퓨터 한 대에 하나의 OS를 설치하고, 애플리케이션이 해당 운영 체제에서 직접 실행되는 방식이다.문제점자원 공유 문제: 애플리케이션들이 동일한 OS를 공유하므로, 같은 리소스(라이브러리, 네트워크, CPU)를 사용하게 된다. 이로 인해 성능 문제가 발생하게 된다.확장성 부족: 새로운 애플리케이션을 설치하거나 추가하려면 운영 체제 및 하드웨어의 환경에 맞게 설치하고 설정해야 한다.배포 방식하나의 물리적 서버가 있다.물리적 서버 위에 운영 체제를 설치한다.동일한 운영 체제에서 여러 프로덕트를 실행한다. 발생하는 문제들을 피하려면 물리적 서버를 추가로 구매해야 한..
[TroubleShooting] DB 쿼리 비용
·
TroubleShooting
👀 현재 상황 및 배경 설명현재 가게 사진을 업데이트하는 로직은 모든 기존 사진을 삭제한 후 새로운 사진을 덮어쓰는 방식으로 작동하고 있다.기존 사진 URL을 데이터베이스에서 모두 조회기존 사진 URL을 DB에서 모두 삭제새로운 사진 URL을 DB에 모두 저장 ▶ 구현 코드/** * 가게 사진을 업데이트합니다. */@Transactionalprotected void updateMarketImages(Market market, List imageUrls) { // 기존 사진 조회 List marketImageList = marketImageRepository.findAllByMarketId(market.getId()); // DB에서 기존 사진 URL 모두 삭제 marketImage..
[TroubleShooting] 롤백이 되지 않는 S3 Bucket
·
TroubleShooting
👀 현재 상황 및 배경 설명애플리케이션을 구현하는 과정에서 이미지를 저장해야 하는 상황이 생겼다.AWS S3 Bucket을 사용하여 이미지는 S3에 저장하고, 해당 이미지의 URL은 서버의 DB에 저장하는 방식으로 구현했다.이 방식은 스토리지와 데이터베이스의 역할을 분리함으로써, 이미지는 클라우드 스토리지에 안전하게 보관하고, 관련 메타데이터는 DB에 저장하여 서버의 부담을 줄이고 이미지 저장 및 제공 속도를 높일 수 있는 장점이 있다. ▶ 구현 코드🔽 S3에 이미지를 업로드 및 삭제하는 서비스 클래스인 S3ImageService/** * S3에 이미지를 업로드 및 삭제하는 서비스 클래스입니다. */@Service@RequiredArgsConstructorpublic class S3ImageServi..
[TroubleShooting] OAuth 로그인에서 state 파라미터를 통한 값 전달 방법
·
TroubleShooting
👀 현재 상황 및 배경 설명현재 JWT 기반 소셜 로그인을 구현 중이며, 클라이언트는 React Native로, 서버는 Spring Boot로 개발하고 있다. 소셜 로그인 버튼 클릭 시 외부 소셜 로그인 페이지로 연결되어 인증을 마친 후, 사용자 정보를 받아오는 기능을 구현했다. ▶ OAuth 로그인의 인증 흐름사용자가 클라이언트를 통해 소셜 로그인을 시도한다.클라이언트가 인증 서버로 리다이렉션하여 사용자 인증을 요청한다.사용자가 인증을 완료하면, 인증 서버는 Authorization Code를 클라이언트에 전달한다.클라이언트는 Authorization Code를 사용하여 인증 서버에 Access Token을 요청하고 발급받는다.Access Token을 사용해 리소스 서버에 사용자 정보를 요청한다.받은..
[Network] XSS, CSRF
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ XSS에 대해서 설명해 주세요.XSS(Cross-Site Scripting): 웹 애플리케이션의 취약점을 이용해, 악성 스크립트를 삽입하여 사용자에게 실행하게 만드는 공격 기법이다. ▶ XSS의 종류Reflected XSS: 악성 스크립트가 서버에 저장되지 않고, URL 등의 입력 데이터에 포함되어 전달되는 유형이다. 사용자가 악성 링크를 클릭하면, 그 즉시 스크립트가 실행된다.Stored XSS: 악성 스크립트가 데이터베이스에 저장되어 여러 사용자에게 지속적으로 전달되는 유형이다. 해당 글을 열람하는 모든 사용자가 스크립트의 영향을 받게 된다.DOM-based XSS: 악성 스크립트가 클라이언트 측에서 DOM(Docu..
[Network] 멀티플렉싱, 디멀티플렉싱
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ 멀티플렉싱과 디멀티플렉싱에 대해 설명해 주세요. ▶ 멀티플렉싱(Multiplexing)멀티플렉싱: 여러 개의 데이터 스트림을 하나의 물리적 통신 채널을 통해 동시에 전송할 수 있도록 하는 기술이다. 네트워크에서 이 과정은 전송 계층(Transport Layer)에서 주로 이루어진다.🔽 예시웹 브라우저, 이메일 클라이언트, 파일 전송 프로그램 등 여러 애플리케이션이 동시에 작동하며 각각의 데이터를 전송하는 경우, 이 데이터들이 모두 하나의 네트워크 연결을 공유한다. ▶ 디멀티플렉싱(Demultiplexing)디멀티플렉싱: 멀티플렉싱된 데이터를 수신 측에서 다시 개별 데이터 스트림으로 분리하는 과정이다. 수신된 데이터는 ..
[Network] 서브넷 마스크, 게이트웨이
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ 서브넷 마스크와, 게이트웨이에 대해 설명해 주세요.▶ 서브넷 마스크서브넷 마스크: IP 주소를 네트워크 주소와 호스트 주소로 나누는 데 사용되는 값이다.네트워크 주소: 네트워크에 속한 모든 호스트(단말)를 포함하는 네트워크 자체를 지칭하는 주소이다.호스트 주소: 같은 네트워크 내에 각 호스트(단말)를 구분하기 위한 주소이다.IP 주소와 관련된 자세한 설명은 여기를 참고하면 좋을 것 같다.🔽 필요성IP 주소에서 네트워크 주소와 호스트 주소를 구분하는 경계점이 고정되어 있지 않다. 서브넷 마스크를 사용하면 필요한 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당할 수 있도록 하여, IP 주소의 낭비를 방지할 수 있다...
soeun2537
Hello, 소은!