[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 주소의 낭비를 방지할 수 있다...
[Network] 로드밸런서
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ 로드밸런서가 무엇인가요?▶ 로드밸런싱로드밸런싱: 네트워크 트래픽을 여러 서버나 네트워크 장치에 고르게 분산시켜, 특정 서버에 과부하가 걸리지 않도록 하는 기술이다. 이를 통해 시스템의 성능, 가용성, 신뢰성을 높이고, 장애 발생 시에도 서비스가 중단되지 않도록 보장한다. ▶ 로드밸런서로드밸런서: 로드밸런싱을 수행하는 장치 또는 소프트웨어를 의미한다. 로드밸런서는 클라이언트의 요청을 받아, 이를 여러 서버 중 하나로 전달하며, 요청에 따라 가장 적합한 서버를 선택한다.🔽 로드밸런서의 필요성서버를 운영할 때, 서버가 감당하지 못할 정도의 트래픽이 몰릴 경우, 이를 해결할 수 있는 방법은 크게 두 가지가 있다.scale-u..
[Network] 라우팅, 포워딩
·
Programming/Network
해당 글은 VSFe 깃허브 레포를 참고하여 작성한 글입니다. (아래 출처에 표기) ✅ 라우터 내의 포워딩 과정에 대해 설명해 주세요.패킷 수신: 라우터는 네트워크 인터페이스를 통해 패킷을 수신한다.헤더 분석: 수신한 패킷의 IP 헤더를 분석하여 목적지 IP 주소를 확인한다.포워딩 테이블 조회: 라우터는 목적지 IP 주소와 일치하는 항목을 찾기 위해 포워딩 테이블을 조회한다.적절한 인터페이스 선택: 포워딩 테이블에 기반하여 패킷을 어떤 인터페이스로 보내야 할지를 결정한다. 선택된 인터페이스는 다음 홉으로 패킷을 전송한다.패킷 전송: 패킷이 결정된 인터페이스를 통해 다음 홉으로 전송된다.홉(Hop): 데이터 패킷이 출발지에서 목적지로 이동하는 동안 거쳐가는 각 네트워크 장치(주로 라우터 또는 스위치)  ✅ ..
soeun2537
'분류 전체보기' 카테고리의 글 목록 (6 Page)