728x90 320x100 시스템 설계 기초 (로드밸런스, 메세지 큐, 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 more 개발일지를 씁니다. [개발일지#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 more 매월, 매년 회고를 씁니다. 2025년 3월 회고 cook yourself well... [개발]멘토링 끝몇 개월간 나의 회고가 평소보다 짧았다. 워낙 이것저것 공부하고 시도하는 걸 좋아해서 몇 년 간 월 회고가 매번 빼곡한 편이었는데, 몇 달 전 멘토링을 시작하면서 멘토링에 집중하기 위해 기존의 개인 공부를 모두 그만두었다. 멘토링은 멘토링이 모두 끝나고 다른 포스팅에서 종합적으로 후기를 남겨보고 싶어서 멘토링을 제외한 것들을 회고에 쓰려니 몇 개월간 나의 회고가 썰렁했었는데 그 멘토링이 3월 중순쯤 모두 끝이 났다.멘토링이 끝나긴 했지만 그래도 몇 개월간은 무언가 회고에 말할 만큼의 이야기는 없을 것 같기도 하다. 그렇다고 아무것도 하고 있지 않은 것은 아닌데 지금 하고 있는 것에 대해 어느 정도 성과나 결과가 나온 뒤에 회고에 작성해 보려니 쓸 .. 2025.04.01 2025년 2월 회고 오르락 내리락 왔다갔다 혼란스러운 2월..... 기.술.블.로.그. 다운 블로그의 첫 발국비학원을 수료할 때 쯤, 이 블로그를 만들었다. 그 때 블로그를 만들게 된 이유는 블로그 공지사항을 보면 알 수 있는데 지금 보면 좀 웃기고 짠하다....ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ(아래의 이미지)대단한 것을 쓰려고 하지 않았다. 그때 당시에는 개발이 너무 어려웠고 너무 힘들어서 어딘가에는 털어놓을 곳, 공부한 것들을 정리해놓을 곳이 필요했고 그게 내 블로그의 시작이였다. 그렇게 4년이 넘는 시간동간 567개의 포스팅을 해왔다.그렇게 4년차가 되어가니 "그건 기술블로그가 아니다." 라는 피드백을 종종 받아 한동안 스트레스를 많이 받았다. 공부한 것을 정리하면 그건 니 것이 아니라고 하고, 사이드 프로젝트 하면서 .. 2025.03.04 2025년 1월 회고 여전히 멘토링 중지난 회고에서 말했던 멘토링을 아직도 하고 있다. 3월 중순 쯤이면 모든 멘토링 일정이 끝날 것 같은데 생각보다 멘토링을 하면서 공부하는 것이 많아서 여전히 다른 것들은 전혀 신경쓰지 않고 멘토링에만 집중 하고 있다. 점점 해야할 공부량이 많아지면서 벅차긴한데 또 그걸 해내는 재미가 있다. 자세하게 이야기 해보고 싶은 것들이 있는데 그건 멘토링이 끝나고 포스팅을 따로 해보고 싶다. 사실 이거 빼곤 쓸 회고 내용이 없다. 죄다 멘토링에 관련된 공부를 했고, 그 내용은 따로 쓸 예정이라서......그렇다고 안 쓰자니 거의 3년 간 매달 썼던 회고를 안쓰고 싶진 않았다. 그냥 습관처럼 남겨보고 싶었다. 2월엔 조금 더 좋은 일들이 있길 바라면서. 2025.02.02 more 읽은 책에 대한 이야기를 합니다. 세번째 읽는, 함께 자라기 : 애자일로 가는 길 (김창준) 책제목 : 함께자라기저자 : 김창준출판사 : 인사이트야생학습협력적이며, 비순차적이고 자료에 한정되지 않으며 명확한 평가를 하지 않는다. 또한 정답은 없으며 목표가 불분명하며 바뀌기도 한다. 이 책에서 말하는 '경력'이란?초급인지 아닌지만 구분해 내는 수단.초급이 아니라면 오히려 경력은 잘못된 정보일 수 있다.경력으로 채용여부나 임금여부를 판단하는 것은 편의적, 관료주의적이며 오히려 조직에 손해이다. 애자일 피드백을 짧은 주기로 얻는 것불확실성이 클 때 우리가 어떻게 해야 하는지 고민한 결과물 1만시간의 법칙 : 자신의 기량을 향상시킬 목적으로 반복적으로 하는 수련 = 의도적 수련자기 계발은 복리로 돌아온다 (*** 내가 가장 좋아하는 말 ***)부트스트래핑 : 자기가 신은 신발에 달린 끈으로 들어올려 .. 2024.11.20 소프트웨어 장신 (산드로 만쿠소) - 장인정신을 향하여 책이름 : 소프트웨어 장인저자 : 산드로 만쿠소출판사 : 길벗애자일 정신빠르고 빠른 짧은 피드백 루프를 통해 올바른 일을 하는지 점검하는 과정팀원의 역할은 지시 받은 일만 하는 것이 아니라, 비지니스와 고객창출에 개발자들이 직접 참여하는 것이 중요코드를 잘 작성하는 것은 프로페셔녈이 가져야 할 최소한의 요건이며, 고객의 만족이 최우선이 되어야 한다.완전한 애자일 전환이란 절차과 도구의 도입 뿐만 아니라 기술적인 탁월함 (= 개발자의 프로페셔널) 모두 함께 있어야 한다.변화와 싸우는 것이 아니라 변화 자체를 내제화 한 것.애자일 방법론이 품질 상태에 대해 알려주진 않기 때문에 소프트웨어 장인 정신이 이 부분을 보완해준다. 소프트웨어 장인 정신개발자가 선택한 커리어에 책임을 지고, 지속적으로 새로운 도구와 .. 2024.11.18 그림으로 이해하는 서버 구조와 기술 (요코타카즈키, 엔도유키) / 쉽게 설명해주는 기술서적 보는게 얼마 만인가. 책제목 : 그림으로 이해하는 서버 구조와 기술저자 : 요코타카즈키, 엔도유키출판사 : 길벗 길벗 리뷰어 참여로 보게된 책인데 사실 이 책을 예전부터 사고 싶어서 리뷰어를 내가 신청했음; (길벗에서 제공받았습니다.) 그래서 리뷰어라서 쓴다기보다는...리뷰도 쓰고 책도 보고....일석 이조 아니냐고....요즘 서버 & 인프라 공부하고 싶은데 나는 개발자여도 서버 & 인프라 쪽은 잘 모르는 상태라 그런지 책들이 나에게 너무 어렵거나 너무 방대하거나 너무 국소적인 부분이 있어서 책고르는데 어려움이 있었던 상태에서 보게 된 책. 일단 쉽다... 정말 그림으로 이해하기 쉽게 되어있다. 마치 예전에 수학의 정석, 개념원리 보다가 뭔말인지 몰랐는데 완자봤더니 설명 잘되어 있어서 눈이 트이는 그런 느낌이었음.그리고.. 2024.09.09 more 가장 조회가 많은 글입니다. [Git-hub/Eclipse] 깃허브와 이클립스 연동하기 ( + 추가 및 수정) 개인적으로 공부한 코드들을 내 개인 깃허브에 차곡차곡 쌓기 위해 내가 사용하는 개발툴인 이클립스와 내 개인 깃허브를 연동해보려 한다. [전제사항] github(깃허브) 아이디가 있다. 이클립스를 이미 설치 했다. github(깃허브)에 연동하고자 하는 프로젝트를 이클립스에 만들어 놨다. [순서] github(깃허브)에 레파지토리 만들어주기 이클립스에서 github(깃허브) 연동하기 gitignore 설정하기 첫 Commit & Push해주기 1. 내 github에 Repository 생성하기 1) 내 깃허브 페이지에서 상단에 [Repositories]를 클릭한 후 초록색 버튼의 [New]를 클릭 해준다. 2) Repository name은 필수 입력이니 적어주고 누구나 주소만 있으면 내가 짠코드들을 볼 .. 2021.09.12 [IntelliJ(인텔리제이)] xml에 뜨는 밑줄, 노란선 없애보기 인텔리제이에서 스프링부트, 마이바티스 조합으로 개발하다보면 xml을 사용해야 하는 일이 생기는데 xml에 쿼리문을 작성하면 아래와 같은 밑줄이 떠서 굉장히 성가시게 만든다. 이걸 없애보자. 1. 상단메뉴[IntelliJ] - [Settings] 을 연다. 2. 좌측메뉴[Inspections] 검색 - [SQL] - [No data source cofigured]을 체크 해제 해준다. 만약에 그걸로도 밑줄이 안없어진다면? [SQL : SQL dialect detection] 체크해제! [SQL : unresolved reference] 까지 해제! [해결완료!] 노란줄 없어짐! 2024.04.01 [IntelliJ] 인텔리제이 플러그인 추천 리스트 인텔리제이 쓰면서 참으로 편리했던 플러그인 (이제 없으면 안되는..) 몇 개 리스트 추천! 1. CodeGlance 소스창 오른쪽에 미니맵을 만들어줌. 소스창 오른 쪽에 소스 미니맵을 만들어 주는데 예전에 VS Code 쓸 때는 이 미니맵이 기본적으로 들어가 있어서 은근 편했는데 인텔리제이에도 이 기능을 제공하는 플러그인이 있어 당연히 깔아줬다. 참고로 3버전을 깔았는데 적용이 안되서 Pro 버전으로 재설치 하니까 잘됐음. 혹시 나처럼 3 버전 안깔리시는 분들은 참고! 2. Rainbow Brackets 각 괄호마다 다른 색으로 변화를 줌. 소스의 양이 많고 괄호가 많을 수록 유용함 나는 괄호가 많을 수록 주석으로 끝나는 괄호에 따로 표시를 해주는데 이 플러그인 사용하면 쓸데없는 주석 사용을 줄일 수 있.. 2024.02.08 more 최신 글 입니다. MySQL에서 어떨 때 VARCHAR, TEXT를 써야 하나요? ✅ VARCHAR vs TEXT의 차이항목VARCHAR(n)TEXT목적짧은 가변 길이 문자열긴 문자열 (대량 텍스트)길이 제한최대 65,535 바이트 (InnoDB는 일반적으로 65535 중 일부만 사용 가능)최대 65,535 바이트 (하지만 실제 저장 방식이 다름, 로우 외부)인덱스가능 (부분/전체 인덱싱 가능)기본적으로 인덱스 불가 (부분 인덱싱은 수동 설정 필요)성능더 빠르고 효율적 (메모리 상에 저장)느릴 수 있음 (별도 공간에 저장됨)NULL 허용 여부가능가능그러나,VARCHAR(n)은 n 바이트 제한이 아니라 문자 수 제한 (UTF-8이면 최대 n×3 바이트)TEXT는 기본적으로 최대 65,535 바이트까지 저장 가능하되, 문자 수 제한은 없음VARCHAR도 전체 row가 65,535 바이트 .. 2025.04.03 데이터베이스 생성시 Charset은 뭘로 해야 하나요? 데이터베이스를 처음 생성할 때 Chartset, Collation은 뭘로 지정해줘야 하나요? 일반적인 웹/앱 서비스용 MySQL 를 사용한다는 전재 하에 utf8mb4 을 사용할 것을 추천함.이유: utf8mb4는 이모지(😊) 포함 모든 유니코드 문자를 저장이 가능함.반면, utf8은 3바이트까지만 저장해서 일부 문자(예: 이모지, 일부 한자)는 깨질 수 있음.🚫 피해야 할 것:atin1, euckr, utf8 등은 옛날 시스템에서나 사용. 글로벌 서비스에는 부적합.collation은요?utf8mb4_general_ci: 속도 우선, 대소문자 구분 Xutf8mb4_unicode_ci: 정확도 우선, 다국어 정렬 고려 (요즘은 이것도 많이 씀)utf8mb4_0900_ai_ci: MySQL 8.0 이상이.. 2025.04.03 2025년 3월 회고 cook yourself well... [개발]멘토링 끝몇 개월간 나의 회고가 평소보다 짧았다. 워낙 이것저것 공부하고 시도하는 걸 좋아해서 몇 년 간 월 회고가 매번 빼곡한 편이었는데, 몇 달 전 멘토링을 시작하면서 멘토링에 집중하기 위해 기존의 개인 공부를 모두 그만두었다. 멘토링은 멘토링이 모두 끝나고 다른 포스팅에서 종합적으로 후기를 남겨보고 싶어서 멘토링을 제외한 것들을 회고에 쓰려니 몇 개월간 나의 회고가 썰렁했었는데 그 멘토링이 3월 중순쯤 모두 끝이 났다.멘토링이 끝나긴 했지만 그래도 몇 개월간은 무언가 회고에 말할 만큼의 이야기는 없을 것 같기도 하다. 그렇다고 아무것도 하고 있지 않은 것은 아닌데 지금 하고 있는 것에 대해 어느 정도 성과나 결과가 나온 뒤에 회고에 작성해 보려니 쓸 .. 2025.04.01 more 728x90 320x100