Study 썸네일형 리스트형 [백엔드TIL] DB로직을 최소하려면 어떻게해야할까? (77일차) DB 로직 최소화를 하려면 어떻게 해야 할까요 DB 로직을 최소화하는 것은 성능을 향상시키고 유지 보수를 간소화하는 데 도움이 됩니다. 예를 들어, 이러한 방법으로 DB 로직을 최소화할 수 있다. EX. 일관된 데이터 모델링: 데이터베이스 테이블과 엔테테를 일관성 있게 설계하고 중복 데이터를 줄이고 일관성을 유지하여 데이터 중복을 최소화화고 무결성을 유지한다. 비즈니스 로직 최적화: 데이터베이스에서 비즈니스 로직을 수행하기보다는 비즈니스 로직을 애플리케이션 레벨에서 처리한다. 데이터베이스는 데이터 저장과 관리에 중점을 두는 것이 좋다. 캐싱: 반복적으로 동일한 데이터를 검색해야 하는 경우, 검색 결과를 캐시하여 데이터베이스 요청을 최소화할 수 있다. 배치 작업: 대량의 데이터를 처리해야 할 때는 배치 작.. 더보기 [백엔드TIL] Mockito를 활용한 단위테스트 (76일차) [ Mockito란? ] Mockito는 개발자가 동작을 직접 제어할 수 있는 가짜 객체를 지원하는 테스트 프레임워크이다. 일반적으로 Spring으로 웹 애플리케이션을 개발하면, 여러 객체들 간의 의존성이 생긴다. 이러한 의존성은 단위 테스트를 작성을 어렵게 하는데, 이를 해결하기 위해 가짜 객체를 주입시켜주는 Mockito 라이브러리를 활용할 수 있다. Mockito를 활용하면 가짜 객체에 원하는 결과를 Stub하여 단위 테스트를 진행할 수 있다. 물론 프레임워크 도구가 필요없다면 사용하지 않는 것이 가장 좋다. [ Mockito 사용법 ] 1. Mock 객체 의존성 주입 Mockito에서 가짜 객체의 의존성 주입을 위해서는 크게 3가지 어노테이션이 사용된다. @Mock: 가짜 객체를 만들어 반환해주는.. 더보기 [백엔드TIL] Spring 구조와 DDD 개발(75일차) Request 데이터를 받을 Dto API 요청을 받을 Controller 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 여기서 많이 오해하고 있는 부분이 Service에서 비즈니스 로직을 처리해야 한다는 것이다. 하지만 전혀 그렇지 않다. Service는 트랜잭션, 도메인 간 순서 보장의 역할만 한다. 그럼 비즈니스 로직은 누가 처리할까? 바로, 도메인 Domain이다. Spring 웹 계층 구조 Web 계층 흔히 사용하는 컨트롤러(@Controller)와 JSP/ Freemarker 등의 뷰 템플릿 영역이다. 이외에도 필터(@Fiilter), 인터셉터, 컨트롤러 어드바이스(@Controller Advice)등 외부 요청과 응답에 대한 전반적인 영역을 나타낸다. Service 계층 @Ser.. 더보기 [백엔드TIL] Docker 설정하면서 트러블슈팅(74일차) [문제상황] ec2에 docker-compose로 스프링을 띄우고, ec2 로컬에 실행한 redis와 연결이 안되고 있다. [원인] application.yml에 작성한 redis의 호스트인 localhost(127.0.0.1)의 주소와 docker의 로컬 호스트 주소가 다르기 때문이다. redis: host: localhost port: 6379 [실행] host에 localhost 대신에 host.docker.internal로 수정한다. =>실패 docker redis network를 구축한뒤 실행된 도커 컨테이너와 연결해준다 =>실패 [해결] docker-compose.yml에 아래 extra_hosts를 추가해준뒤 extra_hosts: - "host.docker.internal:host-gate.. 더보기 [백엔드TIL] Docker 에 대한 이해(73일차) 도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트 입니다. 도커는 일반적으로 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 말합니다. 도커 엔진(Docker Engine)은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 프로젝트입니다. 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 도커의 핵심은 도커 엔진이라고 할 수 있습니다. Virtual Machine(가상머신) vs Docker Container(도커 컨테이너) 기존에도 가상화 기술은 존재해왔습니.. 더보기 [백엔드TIL] EC2에 cloudwatch를 사용하여 성능체크(72일차) 개요 https://dev.classmethod.jp/articles/try-installing-cloudwatch-agent-on-ec2-instances/ 해당 글을 보고 재정리했습니다. 필자는 Ubuntu 운영체제를 사용하는데, 해당 글은 yum 명령어를 사용합니다. 이후에 더 원활하게 세팅하기 위해 해당 글을 다시 정리해서 작성했습니다. AWS는 기본 설정에서 메모리를 모니터링할 수 없습니다. 프리티어를 사용한다면 메모리가 부족한 만큼 메모리에서 문제가 발생할 확률이 높습니다. 따라서 메모리를 모니터링하는 방법을 아래 정리해두었습니다. EC2, Ubuntu 22.04 환경에서 작업했습니다. 순서 IAM Role 생성 필자의 생각에 Role은 여러 권한을 가지고 있는 무언가라는 의미로 자주 쓰여지는.. 더보기 [백엔드TIL] mysql db 연결 시 주요 에러 (71일차) ❓ org/mariadb/jdbc/Driver : Unsupported major.minor version 52.0 👉 Java와 MariaDB 버전 맞추기 (버전 확인하는 곳) ❓ Driver com.mysql.cj.jdbc.Driver claims to not accept jdbcUrl 👉 해결1) application.properties에서 설정한 url에 오타 없는지 확인 👉 해결2) localhost의 경우 아래와 같이 설정해야 함 spring.datasource.url=jdbc:mysql://localhost.com:3306/DB명 ❓ No session repository could be auto-configured, check your configuration (session store t.. 더보기 [백엔드TIL] react , typecript 에대한 개념 학습(70일차) tyepscript 도입을 위해 공부를 해보았다. typeScript의 주요 특징 : 정적 타입: TypeScript는 변수, 함수, 클래스 등에 명시적인 타입을 지정할 수 있다. 이는 컴파일 시점에 오류를 잡을 수 있으며, 코드의 가독성과 유지보수성을 향상시킨다. ECMAScript 호환: TypeScript는 JavaScript의 상위 집합이므로, 모든 JavaScript 코드가 TypeScript로 유효하다. 따라서 기존 JavaScript 코드를 그대로 사용하면서 타입 시스템을 점진적으로 도입할 수 있다. 클래스 기반 객체지향 프로그래밍: TypeScript는 인터페이스, 추상 클래스, 상속 등의 객체지향 프로그래밍 개념을 지원하여 코드의 재사용성과 구조화를 촉진한다. 타입 추론: TypeScri.. 더보기 [백엔드TIL] 세션과 토큰그리고 인증과 인가 (69일차) 인증과 인가 세션기반 인가와 토큰기반 인가에 대해 알아보기 이전에 먼저, 인증과 인가가 무엇인지 부터 알아야할 필요가 있다. 인증과 인가를 같거나 비슷한 개념이라고 생각하는 사람들이 많을텐데, 엄밀하게는 서로 다른 개념이다. 인증과 인가는 요약하자면 시스템의 자원을 적절하고 유효한 사용자에게 전달하고 공개하는 방법이다. 인증 (Authentication) 인증은 쉽게 말하자면, 로그인 이다. 클라이언트가 자기자신이라고 주장하고 있는 사용자가 맞는지를 검증하는 과정이다. 예를 들어 로그인 화면에서 내가 유저 아이디를 USER1 로 입력하고 패스워드를 입력해 제출하면, 서버에서는 내가 진짜로 USER1 이라는 유저가 맞는지 확인한다. 인가 (Authorization) 인가는 인증 작업 이후에 행해지는 작업으.. 더보기 [백엔드TIL] 시간복잡도에 대한 이해 (68일차) CPU 시간자원이란?컴퓨터는 한정된 CPU를 여러 프로세스가 나누어서 사용한다고 했는데요. 이것을 효율적으로 나누어서 사용하기 위해 CPU 스케쥴러를 통해 시간자원을 관리합니다.네트워크에서 타임아웃(Timeout)은 장치나 프로그램이 연결을 중단하기 전까지의 응답 시간을 의미합니다.- 빅오표기법 - 시간복잡도 함수에서 상대적으로 **불필요한 연산을 제거**하여 알고리즘의 분석을 조금 더 간편하게 할 목적으로 시간복잡도를 표기하는 방법입니다. - Big-O(빅-오) ⇒ 상한 점근** - Big-Ω(빅-오메가) ⇒ 하한 점근** - Big-θ(빅-세타) ⇒ 그 둘의 평균**1. O(1)- **입력값의 크기가 아무리 커져도 즉시 출력값을 얻어낼 수 있다.** - **예를 들어 arr의 길이가 100만이라도, .. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 17 다음