EduWithMe-Project
·
내일배움캠프 Spring 5기
프로젝트 목차1. 프로젝트 개요2. 담당 역할3. 트러블 슈팅4. API 명세서5. ERD6. 아키텍처 설계1. 프로젝트 개요프로젝트 정보● 프로젝트 명 : EduWithMe● 인원 : 4명● 작업 기간 : 총 28일 ( 2024.07.20 ~ 2024.08.20 )● Project / Git-Hub : https://github.com/five-star-school/eduWithMe-backend 서비스 설명모든 연령과 배경의 사용자들이 언제 어디서나 접근할 수 있는 개인 맞춤형 학습을 통해 성장하며, 선생님과 학생 간의상호작용을 강화하고 학습 동기를 높이는 교육 플랫폼입니다.2. 담당 역할[1] 실시간 채팅 기능1. 실시간 채팅 기능 구현 목적실시간 사용자 상호작용 필요성:- 사용자들이 실시간으로 문..
내일배움캠프 62일차 TIL - JPA(CascadeType, OrphanRemoval)
·
내일배움캠프 Spring 5기
2024.07.15🔥오늘의 공부🔥    ●  1. CascadeType    ●  2. orphanRemoval Entity간 관계를 정의할 때 사용될 수 있는 설정 1. CascadeType ( 영속성 전이 )Entity 클래스 중 @OneToMany인 1에 해당하는 부모클래스에게 줄 수 있는 옵션으로, 해당 옵션은 연관 관계가 맺어져 있는 자식 엔티티에 부모 엔티티의 영속성 상태를 전이를 시켜주는 옵션이다. 해당 옵션을 사용하면, 아래 해당 이미지에서는 REMOVE 옵션을 사용하고 있지만, 저장, 병합, ALL 등 다양한 옵션이 있지만 여기서는 REMOVE만을 다루겠다.아래 옵션을 사용하게 되면 부모 엔티티가 삭제 될 때, 자식 엔티티도 같이 삭제를 도와준다. 즉, 영속성을 전이 시켜준다. 2. ..
내일배움캠프 61일차 TIL - 쿼리 최적화
·
내일배움캠프 Spring 5기
2024.07.12🔥오늘의 공부🔥    ●  1. ㅇㅇㅇㅇ  최적화주어진 자원(시간, 하드웨어 등)과 같은 제약조건 내에서 최선의 결과(속도 향상, 비용 감소 등)을 도출하기 위해 전체 시스템 또는 코드 구조를 재설계하거나 개선하는 과정을 최적화라고 칭한며, 특정 부분의 성능을 개선하여 전체 성능을 향상하는 것을 목표로 한다. 정리하면 최소한의 자원을 이용해 성능을 향상 시킨다는 것을 최적화라고 칭한다. 최적화 전략1. 성능 측정 : 최적화 전후의 성능을 객관적으로 측정하고 비교합니다.2. 점진적 적용 : 한 번에 많은 변경을 하기보다는 단계적으로 최적화를 진행합니다.3. 모니터링 : 최적화 후 시스템의 전반적인 성능과 안정성을 지속적으로 모니터링 합니다.4. trade-off 고려 : 성능 향상과 ..
내일배움캠프 60일차 TIL - Security 예외처리
·
내일배움캠프 Spring 5기
2024.07.11🔥오늘의 공부🔥    ●  1. Security 인증에 대한 예외처리    ●  2. AuthenticationFailureHandler ( 로그인 실패 예외 처리 )    ●  3. AuthenticationEntryPoint ( 로그인 인증에 대한 리소스 접근 예외 처리 ) AuthenticationFailureHandlerSpring Security에서 인증에 실패 시 호출되어 처리할 작업을 정의하는 인터페이스입니다. 주로 로그인 시도가 실패한 경우에 호출이되며, 클라이언트에게 적절한 응답을 전송하는 등 여러가지 추가적인 작업을 수행 할 수 있다.@Slf4j(topic = "FailureHandler[로그인 인증 실패 예외]")@Componentpublic class Failu..
내일배움캠프 59일차 TIL - 심화 프로젝트 설계
·
내일배움캠프 Spring 5기
2024.07.10🔥오늘의 공부🔥    ●  1. 심화 프로젝트 설계  프로젝트명 : 2step프로젝트 설명팀의 업무를 시각화한 프로젝트 관리 프로그램으로써 KanbanBoard의 대표적인 사이트인 "Trello" 웹사이트를 모티브로 설계하게 된 프로젝트이다.구조는 위의 이미지와 같이 보드형식에 하나의 컬럼 내부엔 여러개의 카드가 존재할 수 있으며, 보드는 하나의 프로젝트 단위, 컬럼은 해당 카드들이 들어가는 곳의 상태를 나타내주고, 카드는 기본적인 기능 구현 및 업무에 대한 내용을 넣어 주게된다. 업무 상태의 따라 카드의 위치를 컬럼 단위로 변경이 가능하다.  와이어 프레임1. 로그인 된 사용자는 여러개의 보드를 만들 수 있다.2. 보드를 생성한 사용자는 해당 보드에 대해 Manager 권한을 가진..
내일배움캠프 58일차 TIL - Redis
·
내일배움캠프 Spring 5기
2024.07.09🔥오늘의 공부🔥    ●  1.  캐시가 무엇인지 알아보자Redis를 간단히 알아보자 Redis(Remote Dictionary Server)비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 NoSQL이며, 인메모리 데이터 구조를 가지고 Key-Value형태로 데이터를 저장을 해주고 DB, Cache등 다양한 용도로 사용이 가능한 오픈 소스 인메모리 데이터베이스이다. 특징1 ) 인메모리 데이터 저장소이며 메모리에 데이터를 저장하고 불러오기 때문에 매우 빠른 데이터 읽기 및 쓰기가 가능하다.2 ) 인메모리 방식이라 디스크 기반 데이터베이스보다 훨씬 빠른 성능을 보장해준다.3 ) Dictionary로써 고성능 Key-Value 구조의 저장소이다.4 ) 대용량 트래픽을 처리해야 하..
내일배움캠프 57일차 TIL - Docker(1)
·
내일배움캠프 Spring 5기
2024.07.08학습    ●  1. Pagination 사용 방법과 사용 이유 CI/CDContinuous Integration/Continuous Deployment(Delivery)의 약자로, 지속적인 통합과 지속적인 제공을 의미지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 지속적인 통합( Continuous Integration )코드의 지속적인 통합자동화된 빌드와 자동화된 테스트를 제공안정적인 코드를 빠르게 제공할 수 있는 밑거름이 된다.// 브랜치별로 merge하는 과정을 ci라함. 지속적인 배포( Continuous Deployment )소스 변경분을 빠르게 테스트하고, 자동화된 테스트를 진행하며 자동으로 운영환경까지 배포하는 시스템을 의미한다.배포를 자동화하여 배포 시간을 단축하고..
내일배움캠프 56일차 TIL - AWS(3) RDS
·
내일배움캠프 Spring 5기
2024.07.05학습    ●  1. RDS RDS(Relational Database Service)RDS는 관리형 데이터베이스 서비스로, Amazon RDS 서비스를 통해 데이터베이스 엔진을 선택하고 필요한 크기 및 용량을 선택하여 인프라를 자동으로 프로비저닝할 수 있습니다. 따라서 EC2인스턴스 내에 직접 데이터베이스를 설치하고 구성하는 대신 RDS서비스를 사용하여 데이터베이스를 생성, 관리 및 확정할 수 있습니다. 해석1. DB를 위한 인프라를 자동으로 구축 및 업데이트를 도와주는 AWS의 서비스 중 하나이다.2. RDS에서 지원하는 다양한 기능을 통해 DB에 대한 용량을 늘린다던가 하는 작업들을 손 쉽게 할 수 있어 DB 생성 및 관리 확장등을 손 쉽게 컨트롤 할 수 있는 장점이 있다. 정리정..
내일배움캠프 55일차 TIL - QueryDSL Pagination
·
내일배움캠프 Spring 5기
2024.07.04학습    ●  1. Pagination 사용 방법과 사용 이유 Pagination페이지네이션 이란, 여러개의 게시글을 페이지당 보여질 갯수와 페이지로 나누어서 보여주는 방식이다.  1. Pagination을 사용하는 이유서버 입장에서 게시글이 몇개가 존재할지 알 수가 없다. 만약, DB에 1억개의 게시글이 존재한다고 가정했을 때1억개의 게시글을 전체 조회를 하게 되면 서버에 부하가 걸려 서버가 내려갈 것이다.또한, 한 페이지에 1억개의 데이터를 보여주게 된다고 했을때, 눈으로 보기가 매우 힘들 것이다.이러한 이유 때문에 많은 웹 사이트들은 Pagination을 사용하고 있다. 2. Pagination 예시위의 사진과 같이 한페이지에는 여러개의 게시글을 보여줄 수 있으며, 페이지 하나당..
내일배움캠프 54일차 TIL - QueryDSL 사용하는 방법
·
내일배움캠프 Spring 5기
240703학습    ●  1. QueryDSL 사용법 QueryDSL이란?1. SQL, JPQL 등을 코드로 작성할 수 있도록 해주는 프레임워크이다.2. 쿼리를 type-safe(컴파일시 에러 체크 가능)하게 Java코드로 작성을 할 수 있게 도와준다. SpringDataJPA는 복잡한 쿼리, 동적 쿼리 등을 구현하는데 있어 한계가 존재하며 MyBatis, JPQL과 같은 문자열 형태로 쿼리문을 작성하게 되면 컴파일 시에 오류를 발견하는 것이 불가능하다는 큰 단점이 존재했다.이러한 문제점을 해결하기 위해 Querydsl을 이용할 수 있다. 해당 Querydsl은 자바 코드로 SQL문을 작성할 수 있기 때문에 컴파일시에 오류 확인이 가능하여 잘못된 쿼리가 실행되는 것을 미리 방지를 할 수 있다. Quer..