전체 글
DB Index
DB Index
2024.11.20DB Index 란 ?데이터베이스에서 index는 데이터를 빠르게 검색하기 위해 사용하는 자료구조 이다.책의 목차처럼, 테이블의 특정 컬럼에 대한 정보를 정렬된 상태로 별도로 저장해 두고검색 시 해당 정보를 이용해 빠르게 원하는 데이터를 찾을 수 있다. DB Index의 필요성 검색 속도 향상일반적으로 데이터가 많아질수록 검색 속도가 느려진다.Index를 사용하면 테이블 전체를 탐색하는 대신, 특정 컬럼에 대해 정렬된 데이터를 조회하므로 속도가 향상된다. 성능 최적화특히 대량의 데이터에서 WHERE, JOIN, ORDER BY 등이 포함된 쿼리를 실행할 때 인덱스는 필수적이다. DB Index의 동작 원리DB Index는 내부적으로 B-Tree, Hash Table 같은 자료 구조를 사용한다.여기..
Docker Compose란?
Docker Compose란?
2024.11.08Docker Compose란 ? 1) Docker Compose는 어떤 기술인가Docker Compose는 여러 컨테이너를 간편하게 관리하고 실행항 수 있는 도구이다.여기서 컨테이너란 독립적인 작업 환경이 갖춰진 풀옵션 집처럼 생각할 수 있다각 집에는 필요한 모든 물건(코드, 라이브러리, 설정)이 다 들어있어서 이 집을 어디에 놓더라도 동일하게 작동한다. 예를 들어 개발팀의 프로젝트가 있다면, 모든 팀원이 동일한 환경에서 개발 작업을 할 수 있게 이 집(컨테이너)을 각각 제공하는거다.Docker Compose가 이런 독립된 집을 한꺼번에 관리해주는 역할이라고 생각한다. 2) 어떤 원리로 동작 하는가Docker Compose는 docker-compose.yml 이라는 파일을 사용해 여러 컨테이너를 한 번에..
Docker Compose로 MySQL 환경 구성 및 팀과 공유하는 방법
Docker Compose로 MySQL 환경 구성 및 팀과 공유하는 방법
2024.11.071. Docker 설치 (공통)https://www.docker.com/ Docker: Accelerated Container Application DevelopmentDocker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.www.docker.com 1. 상단의 링크로 접속2. Download Docker Desktop 설치(운영체제에 맞게 설치!) - Linux는 별도의 설치 가이드가 있으니 공식 문서를 참고3. Docker 설치가 완료되면 터미널이나 명령 프롬프트에서 아래의 명령어를 ..
RESTful API 란?
RESTful API 란?
2024.11.03REST ?REST(Representational State Transfer)- 웹에 존재하는 모든 자원(이미지, 동영상, 텍스트 등)에 고유한 URI를 부여하여 해당 자원에 대한 주소를 부여하는 것- 웹 서비스를 만드는 데 사용되는 제약(constraint)의 모음- HTTP 프로토콜을 기반으로 하는 아키텍처 스타일 중 하나- 리소스를 특정하고 조작하는 방법에 대한 일련의 규칙을 정의즉 RESTful API는 이러한 REST 원칙을 지키는 API로 클라이언트와 서버 간의 데이터 통신을보다 효율적이고 일관성 있게 설계할 수 있게 해 준다REST 구성1. 리소스 (Resource) : - REST에서 모든 데이터는 리소스로 간주된다. 예를 들어, 사용자 정보, 게시글, 댓글 등이 각각 하나의 리소스다. ..
SNS-Project(트러블 슈팅)
SNS-Project(트러블 슈팅)
2024.10.25배경팀 프로젝트를 진행하면서내가 맡게 된 기능은 친구기능 쪽이었다친구기능에는 친구 요청, 수락, 삭제, 조회, 친구의 게시물 조회등이 있었고설계 과정에서 테이블 설계를 어떻게 할지 고민하였다.나는 처음에 테이블을 한 개를 만들고 친구상태라는 값을 통해 하면 어떻겠냐고 의견제시를 하였고팀원 한 명이 그 방법이 성능에 좋은 방법은 아니라고 하였다.DB의 경우 상태로 표현하면 A유저의 친구를 찾을 때 DB값을 모두 조회하다가 친구상태인 값들을 불러오기 때문에성능면에서 좋지 않아 테이블을 두 개로 나누고 요청테이블, 친구테이블로 분리하여테이블 자체로 상태를 분류하고자 하였고 좋은 생각이라 생각해 아래와 같이 DB를 설계하였다.그리고 개발을 진행하던 중 친구수락 로직에서 문제를 발견하였다.발단친구 요청을 보내고 ..
SpringBoot - JPA / 일정관리프로그램(트러블 슈팅)
SpringBoot - JPA / 일정관리프로그램(트러블 슈팅)
2024.10.17배경User(회원) 수정기능 개발 완료 후Postman 사용해서 테스트 중 상태코드 200으로 정상 작동 하였는데DB값이 수정되지 않는 현상 발견발단 및 전개1. entity, requestDto, responseDto, controller, service의 코드를 면밀하게 살펴보았으나 문제없음2. 디버깅 모드로 controller와 service에 Postman으로 요청한 값이 전달되는지 확인 -> 정상절정LLM 모델 중 perplexity URL : https://www.perplexity.ai/ 사용하여 해당 상황을 설명위와 같이 상황을 설명하였더니이렇게 답변해 주었고 천천히 읽어 내려가다 "트랜잭션 관리"에서 아차 싶었고바로 코드를 확인해 보니 @Transactional이 빠져있는 것을 확인수정 ..
Issues 생성 후 브랜치 생성 및 이동 방법
Issues 생성 후 브랜치 생성 및 이동 방법
2024.10.17Issues 생성1. Issues 버튼 클릭2. New Issue 클릭1. Add a title -> 구현할 기능 제목 작성2. Add a description -> 구현할 기능의 정보 (Method, URL. RequestBody, ResponseBody, 참고사항 등) a. 해당 양식은 여러 컨벤션이 존재하고 개발 팀, 회사등에서 적용하기로 한 양식을 사용3. Submit new issue 클릭### $\bf{\normalsize{\color{yellow}POST}}$ Menu 생성 기능`/api/store/{storeId}/menu` Requqest Body Response Body { "name" : "빅맥", "price" : "1..
GET과 POST 방식이란
GET과 POST 방식이란
2024.10.141. GET 방식GET, 영어 뜻 그대로 가져오다라는 뜻을 가지고 있다.즉 어떠한 정보를 가져와 조회하기 위해서 사용되는 방식이다. [GET 방식의 특징] - URL에 변수(데이터)를 포함시켜 요청한다. - 데이터를 Header(헤더)에 포함하여 전송한다. - URL에 데이터가 노출되어 보안에 취약하다. - 캐싱할 수 있다.(접은글 참조)더보기Q) Caching(캐싱)이란? 캐싱이란 한번 접근 후, 또 요청할시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것입니다.GET 방식은 간단한 데이터를 URL에 넣도록 설계된 방식으로 데이터를 보내는 양에 한계가 있다.HTTP자체는 GET 방식의 URL 길이에 제약을 두고 있지는 않지만, 브러우저에서 최대 길이를 제한하고 있다.또한 URL형식에..
DI와 IoC
DI와 IoC
2024.10.11의존성 주입(DI, Dependency Injection)과 IoC(제어의 역전, Inversion of Control)는 소프트웨어 개발에서 객체 간의 의존성을 관리하고, 더 유연하고 테스트하기 쉬운 구조를 만들기 위한 개념이다. 의존성이란 ?프로그램에서 객체(클래스)는 혼자 동작하지 않고 다른 객체를 사용해야 할 때가 많다.예를 들어, A라는 클래스가 B라는 클래스의 기능을 이용한다고 할 때, A는 B에 의존한다고 말할 수 있다. - 자동차는 혼자 움직일 수 없다. 엔진이 있어야 작동한다. 이때, 자곧ㅇ자는 엔진이 필요하므로 "엔진에 의존한다"고 말할 수 있다.- 만약 자동차가 엔진을 스스로 만든다면, 자동차는 엔진과 아주 강하게 연결된 상태라서 변경이 어렵다. class Engine { pub..
오버로딩과 오버라이딩
오버로딩과 오버라이딩
2024.10.10오버로딩(Overloading)오버로딩은 같은 이름의 메서드를 다른 매개변수로 정의하는 것을 말한다.하나의 클래스 내에서 메서드 이름은 동일하지만, 매개변수의 개수나 타입을 다르게 하여 여러 메서드를 정의할 수 있다.오버로딩은 컴파일 시점에 결정된다. class Calculator { // 두 정수를 더하는 메서드 public int add(int a, int b) { return a + b; } // 세 정수를 더하는 메서드 (오버로딩) public int add(int a, int b, int c) { return a + b + c; } // 두 실수를 더하는 메서드 (오버로딩) public double add(doub..