-
시스템 설계 기초 (로드밸런스, 메세지 큐, CDN, DNS 등)
아래의 내용은 을 바탕으로 정리한 내용입니다. 사용자는 웹 브라우저나 모바일 앱을 통해 도메인 이름을 이용하여 웹사이트에 접속한다. 이 접속을 위해서 DNS에 질의하여 IP주소로 변환하는 과정이 필요하다.DNS(Dmain Name Service) : 도메인 이름을 IP주소로 반환한다. ex) www.test.com -> 100.100.100.100정적 콘텐츠 (JS, CSS, 이미지 등)은 웹서버를 통해 서비스하지 않고 CDN을 통해 제공하여 더 나은 성능을 보장한다. CDN(콘텐츠 전송 네트워크) : 정적 네트워크를 전송하는데 쓰이는, 지리적으로 분산된 서버의 네트워크로 JS, CSS, 이미지 등을 캐시할 수 있다.CDN 사용시 고려해야 할 사항 : 적절한 만료 시한 설정, 비용, 장에 애 대..
2024.08.12
-
[HTTP] 인터넷 네크워크 (IP(인터넷 프로토콜), TCP/UDP, PORT, DNS)
인터넷 프로토콜 스택의 4계층인터넷 프로토콜 스택의 4계층을 간략하게 보면 위와 같다. 이를 좀 더 뜯어보자. 인터넷 프로토콜(Internet Protocol, IP)인터넷 프로토콜(Internet Protocol, IP)은 컴퓨터 네트워크에서 데이터를 주고받는 데 사용하는 규약이다.IP는 인터넷의 핵심 프로토콜로, 모든 인터넷 트래픽의 전달을 담당한다.IP 주소를 사용하여 발신지와 수신지를 식별하고, 데이터를 패킷(packet)이라는 작은 단위로 나누어 전송한다.인터넷에서 데이터를 주고 받기 위해서 각자 전송과 송신이 가능한 식별자가 필요한데, 그 중 하나가 IP이다. 인터넷 프로토콜(Internet Protocol, IP) 주요 개념 IP 주소IPv4 (Internet Protocol version..
2024.08.05
-
[스프링(Spring)] 롬복(Lombok) (롬복이란 / 자주 쓰는 기능 / @Data 사용을 지양해야 하는 이유 등)
롬복(Lombok) 이란?롬복(Lombok)은 자바 개발자들이 코드 작성을 더욱 편리하게 할 수 있도록 도와주는 라이브러리이다. 롬복(Lombok)의 특징컴파일 시점에 코드를 추가한다.별도의 라이브러리를 추가로 설치해야 한다.IDE의 플러그인을 지원한다. [자주 쓰는 기능] @Getter, @Setter클래스의 필드에 대한 getter, setter 메서드를 자동으로 생성해 준다.코드의 양을 줄이고, 가독성을 높일 수 있다.[사용전]public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) ..
2024.08.02
-
[스프링(Spring)] HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 (@RequestParam, @RequestBody, @ModelAttribute 이해하기)
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 가장 많이 사용하는 3가지 방법과 스프링과 연계하여 @RequestParam, @RequestBody, @ModelAttribute 어노테이션에 대해 이해해보자! [HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법]가장 많이 사용하는 3가지 방법을 정리하였다. 1. GET - 쿼리 파라미터 형식으로 요청하기HTTP message body 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달하는 방식이다.요청형태 -> /url?username=hello&age=20검색, 필터, 페이징 등에서 많이 사용한다.*** 이 때 주로 사용하는 (혹은 적절한) 스프링 어노테이션@RequestParam@GetMapping(..
2024.08.02
개발일지를 씁니다.
-
[개발일지#017] 로그인 인터셉터(Interceptor) 적용하기
로그인 기능이 구현되어 있지만 로그인에 따라 권한 분리가 잘되어 있지 않다. 인터셉터를 적용해서 권한 분리를 해보자![개발목표]인터셉터를 이용하여 로그인 권한 분리 구현 [구현화면]빌린책, 나의책, 내정보 클릭시, 로그인하지 않았다면 로그인 페이지로 이동. [구현하기]1. 인터셉터, 필터, 스프링 시큐리티 선택하기📌 권한, 로그인에 관련된 기능들은 인터셉터, 필터, 스프링 시큐리티 등이 있어 어떤걸 선택할지 고민해야 함. 이 사이드 프로젝드의 경우, 특정 URL에 대해 로그인 여부를 체크하고 로그인 페이지로 리다이렉트하는 기능을 구현하는 비교적 간단한 방식이기 때문에 인터셉터를 사용하였음! 🚀 인터셉터, 필터, 스프링 시큐리티 비교방법장점단점적합한 경우필터 (Filter)모든 요청을 처리 가능, 서블..
2025.02.20
-
[개발일지#016] 검색 기능 구현하기
[개발목표]해당 메뉴 : 모든책 / 나의책 / 빌린책검색 기능 구현하기책 썸네일 이미지 보이게하기총 건수 보이게 하기게시판 넓이 변경 (더 넓게) [구현화면]모든책게시판 넓이를 넓혔음. (800 -> 1200으로...너무 좁아서!)책이름, 저자, 출판사명, 대여 가능한 책으로 검색 가능상단에 총건수를 표시.책 썸네일 이미지를 게시판에 포함. 나의책, 빌린책나의 책과 빌린책은 모든책과 검색기능이 동일하나 빌린책은 반납하지 않은 책만 볼 수 있도록 다른 검색조건을 설정하였음. [구현하기]나의책과 빌린책은 거의 같은 방식으로 쿼리만 달라지기 때문에 모든책 화면을 기준으로 작성할 예정bookMapper.xml SELECT BOOK_ID, BOOK_NAME, ..
2025.02.20
-
[개발일지#015] 대여내역 조회하기 (+ 썸네일 추가)
[개발목표]책 단건 조회시, 하단에 대여했던 내역을 확인 가능하게끔 구현책 단건 조회시, 책 이미지도 보여지게끔 구현 [구현화면]책 정보책 단건조회 시, 하단에 대여 기록을 확인할 수 있도록 구현. [구현하기]bookMapper.xml SELECT ROW_NUMBER() OVER (ORDER BY RENTAL_DATE DESC) AS row_num, BOOK_RENTAL_ID, (SELECT MEMBER_NAME FROM MEMBER_TB WHERE MEMBER_ID = BOOK_RENTAL_ID) AS BOOK_RENTAL_NAME, RENTAL_DATE, RETURN..
2025.02.20
최신 글 입니다.
-
2025년 2월 회고
오르락 내리락 왔다갔다 혼란스러운 2월..... 기.술.블.로.그. 다운 블로그의 첫 발국비학원을 수료할 때 쯤, 이 블로그를 만들었다. 그 때 블로그를 만들게 된 이유는 블로그 공지사항을 보면 알 수 있는데 지금 보면 좀 웃기고 짠하다....ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ(아래의 이미지)대단한 것을 쓰려고 하지 않았다. 그때 당시에는 개발이 너무 어려웠고 너무 힘들어서 어딘가에는 털어놓을 곳, 공부한 것들을 정리해놓을 곳이 필요했고 그게 내 블로그의 시작이였다. 그렇게 4년이 넘는 시간동간 567개의 포스팅을 해왔다.그렇게 4년차가 되어가니 "그건 기술블로그가 아니다." 라는 피드백을 종종 받아 한동안 스트레스를 많이 받았다. 공부한 것을 정리하면 그건 니 것이 아니라고 하고, 사이드 프로젝트 하면서 ..
2025.03.04
-
[개발일지#017] 로그인 인터셉터(Interceptor) 적용하기
로그인 기능이 구현되어 있지만 로그인에 따라 권한 분리가 잘되어 있지 않다. 인터셉터를 적용해서 권한 분리를 해보자![개발목표]인터셉터를 이용하여 로그인 권한 분리 구현 [구현화면]빌린책, 나의책, 내정보 클릭시, 로그인하지 않았다면 로그인 페이지로 이동. [구현하기]1. 인터셉터, 필터, 스프링 시큐리티 선택하기📌 권한, 로그인에 관련된 기능들은 인터셉터, 필터, 스프링 시큐리티 등이 있어 어떤걸 선택할지 고민해야 함. 이 사이드 프로젝드의 경우, 특정 URL에 대해 로그인 여부를 체크하고 로그인 페이지로 리다이렉트하는 기능을 구현하는 비교적 간단한 방식이기 때문에 인터셉터를 사용하였음! 🚀 인터셉터, 필터, 스프링 시큐리티 비교방법장점단점적합한 경우필터 (Filter)모든 요청을 처리 가능, 서블..
2025.02.20
-
[개발일지#016] 검색 기능 구현하기
[개발목표]해당 메뉴 : 모든책 / 나의책 / 빌린책검색 기능 구현하기책 썸네일 이미지 보이게하기총 건수 보이게 하기게시판 넓이 변경 (더 넓게) [구현화면]모든책게시판 넓이를 넓혔음. (800 -> 1200으로...너무 좁아서!)책이름, 저자, 출판사명, 대여 가능한 책으로 검색 가능상단에 총건수를 표시.책 썸네일 이미지를 게시판에 포함. 나의책, 빌린책나의 책과 빌린책은 모든책과 검색기능이 동일하나 빌린책은 반납하지 않은 책만 볼 수 있도록 다른 검색조건을 설정하였음. [구현하기]나의책과 빌린책은 거의 같은 방식으로 쿼리만 달라지기 때문에 모든책 화면을 기준으로 작성할 예정bookMapper.xml SELECT BOOK_ID, BOOK_NAME, ..
2025.02.20