WEB

·WEB
스프링 부트를 사용한 애플리케이션 개발에서 테스트는 매우 중요한 역할을 한다. 적절한 테스트는 코드의 안정성과 품질을 보장하고, 예기치 못한 오류를 사전에 방지할 수 있게 해 준다. 스프링에서는 다양한 테스트 방법을 제공하는데, 그중에서도 Mock을 활용한 단위 테스트와 SpringBootTest를 사용한 통합 테스트는 자주 사용되는 두 가지 방식이다. 이번에는 이 두 가지 테스트 방법의 차이점과 각각의 사용 목적에 대해 설명해보려고 한다.     @Mock먼저 Mock을 사용한 테스트이다.@ExtendWith(MockitoExtension.class)class ProductServiceTest { @Mock private ProductRepository productRepository; ..
·WEB
스레드에 대한 자세한 설명은 스레드란 무엇인가?를 보면 될 거 같다. 스레드(Thread)란?간단하게 말해서 스레드는 일꾼이다. 하나의 프로세스 내에서 작업을 처리하는 단위로, 컴퓨터의 CPU는 스레드 단위로 작업을 처리한다. CPU는 매우 짧은 시간 동안 여러 작업을 번갈아 가면서 처리하기 때문에, 사용자 입장에서는 동시에 여러 작업이 실행되는 것처럼 보이지만 사실은 여러 스레드가 번갈아가면서 작업을 수행하는 것이다. 스레드가 많으면 좋을까?스레드가 많다고 해서 무조건 좋은 것은 아니다. 스레드를 많이 생성하면 다음과 같은 문제들이 발생할 수 있다.메모리 소모: 스레드가 생성될 때마다 메모리를 사용하기 때문에, 스레드가 많아지면 메모리 부족 문제가 발생할 수 있다.Race Condition: 여러 스레..
·WEB
트랜잭션(Transaction)이란?트랜잭션은 "더 이상 나눌 수 없는 작업의 단위"를 의미한다. 데이터베이스에서 여러 작업을 하나로 묶어 처리할 때 사용되며, 트랜잭션이 성공하면 모든 작업이 적용되고, 실패하면 아예 적용되지 않도록 하여 데이터를 안전하게 처리할 수 있다. 트랜잭션의 속성트랜잭션은 ACID라는 네 가지 중요한 속성을 가진다.원자성 (Atomicity): 트랜잭션 내의 모든 작업은 하나의 단위로 실행되며, 하나라도 실패하면 전체 작업이 취소(rollback)되어 데이터에 아무 영향도 없게 된다.일관성 (Consistency): 트랜잭션이 끝난 후 데이터는 항상 일관성을 유지해야 한다. 데이터베이스의 규칙을 어기지 않도록 보장하는 것이다.격리성 (Isolation): 여러 트랜잭션이 동시에..
·WEB
JUnit이란?JUnit은 자동화된 테스트를 쉽게 작성하고 실행할 수 있게 해 주며, 테스트 결과를 빠르게 피드백받을 수 있어 개발자들이 선호하는 프레임워크이다.현재 많이 사용되는 건 JUnit 5이며, 자바 8 이상을 필요로 한다.단위 테스트단위란 엄격하게 정해져 있지는 않지만, 일반적으로 클래스 또는 메서드 수준으로 정해진다.그래서 구현 목표에 맞게 잘 동작하는지 확인하는 것이 중요하다. 단위 테스트의 장점단위 테스트는 주로 하나의 메서드를 단위로 테스트하기 때문에, 코드를 변경해도 기존에 작성한 테스트 코드만 돌려보면 변경 사항이 기존 기능에 영향을 미쳤는지 빠르게 확인할 수 있다. 이렇게 하면 새로운 기능을 추가하거나 기존 코드를 수정할 때 더 안전하게 작업할 수 있는 장점이 있다. Annotat..
·WEB
데이터베이스는 현대 소프트웨어 개발에서 데이터를 저장하고 관리하는 핵심 요소이다. 오늘은 가장 많이 사용되는 데이터베이스 유형인 관계형 데이터베이스(RDB)와 비관계형 데이터베이스(NoSQL)에 대해 깊이 있게 알아보고, 각각의 특징, 장단점을 다뤄볼 것이다.RDB (Relational Database)란?사전에 엄격하게 정의된 DB schema를 가진 테이블 기반형식으로 저장하는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다. 장점엄격한 데이터 구조데이터가 구조화되어 있고, 외래 키(foreign key)와 같은 제약 조건(constraints)을 통해 데이터 간의 일관성을 유지할 수 있다. 트랜잭션 지원원자성, 일관성, 격리성, 지속성(ACID)이라는 ..
·WEB
영속성 컨텍스트란? 영속성 컨텍스트는 JPA(Java Persistence API)에서 엔티티의 생명주기를 관리하고 저장소처럼 엔티티를 캐싱하는 역할을 하는 메모리 공간이다. 이 컨텍스트는 엔티티 매니저(EntityManager)에 의해 관리되고, 애플리케이션에서 데이터베이스로의 접근을 효율적으로 제어한다. 카페로 예를 들어 보겠다.매일 같은 시간에 A는 아이스 아메리카노를 시킨다고 가정하자. 카페에 가서 A가 "아이스 아메리카노 한 잔 주세요"라고 주문한다. 이때 바리스타는 주문한 것을 기억하기 위해 메모를 하거나 POS 시스템에 입력한다. 다음 날 같은 카페에 다시 갔는데 지난번과 같은 바리스타가 일하고 있다. A가 또 "아이스 아메리카노 한 잔 주세요"라고 주문하려고 하니까, 바리스타가 "아, 지난..
·WEB
Thread란 무엇일까?스레드는 프로세스 내에서 실행되는 독립적인 흐름을 의미한다. 하나의 프로그램(프로세스)이 여러 작업을 동시에 할 수 있게 해주는 기능이다. 예를 들어, 음악을 들으면서 문서 작업을 할 때 각각의 작업이 스레드로 실행된다고 생각할 수 있다. 애플리케이션이 하나의 프로세스가 되고, 그 안에서 여러 개의 스레드가 할당받은 자원을 이용하여 실행 단위로 존재할 수 있다. 즉 스레드는 하나의 프로세스 안에서 여러 실행의 흐름이라고 생각하면 된다. 자바에서 Thread란?자바에서 스레드는 Thread 클래스나 Runnable 인터페이스를 사용해 구현할 수 있다. Thread 클래스를 상속받아 직접 스레드를 생성하거나, Runnable 인터페이스를 구현한 클래스를 Thread 생성자에 넘겨서 스..
·WEB
프로젝트를 하며 yml과 같은 민감한 정보들을 안전하게 관리하도록 서브모듈을 사용하기로 결정하였다.1. SubModule이란?SubModule은 Git에서 제공하는 기능으로, 외부 라이브러리나 다른 프로젝트를 현재 레포지토리에 포함시킬 수 있는 기능이다. 덕분에 코드 중복 없이 다른 프로젝트의 코드를 가져다 쓸 수 있다.2. 왜 SubModule을 사용했을까?다양한 프로젝트를 진행하면서, 데이터베이스 설정 정보 같은 민감한 정보를 여러 레포지토리에서 중복 없이 관리하고 싶을 때가 있다. 이럴 때 SubModule을 사용하면, 중요한 정보들을 Private 레포지토리에 저장해 두고 필요한 메인 레포지토리에서 쉽게 가져와 쓸 수 있다. 이렇게 하면 실수로 중요한 정보를 공개하는 상황을 방지할 수 있다.3. ..
·WEB
팀원들과 간단한 자기소개 웹 페이지를 만들기로 했습니다. 이전에는 배포 서버를 활용하여 통신을 하였지만 서버 없이 해결해야 하는 문제 상황이 발생하였습니다.1. 문제 발생배포 서버 없이 DB의 데이터를 리소스에 있는 프론트엔드로 전달하는 방법을 전혀 알지 못했습니다. 기존에는 배포 서버를 통해 프런트엔드와 통신했기에, 서버가 없는 상황에서 데이터를 어떻게 주고받아야 할지 난관에 부딪혔습니다.2. 해결책 탐색JSON 통신 시도: 이전에 해왔던것 처럼, JSON을 통해 데이터를 주고받는 방법을 먼저 시도했습니다. 포스트맨을 사용해 원하는 결과가 나오는 걸 확인했지만, 결과적으로 실패했습니다. 분명히 해결 방법이 있을 거라 생각하고 다른 접근을 고민하게 되었습니다.타임리프와 @Controller 사용: 이전에..
·WEB
1. HTML이 갑자기 궁금해진 과정대학교 1학년 때 HTML과 CSS를 공부한 이후로는 한동안 사용하지 않았습니다. 그런데 최근에 HTML과 CSS를 사용할 기회가 생기면서, 제가 작성한 HTML이 웹 브라우저에서 어떻게 동작하는지 문득 궁금해졌습니다. 그래서 오늘의 TIL에서는 HTML이 웹 브라우저에서 어떻게 작동하는지 알아보겠습니다.2. HTML이란 무엇일까?HTML은 Hypertext Markup Language의 약자로, "마크업" 언어입니다.3. 그렇다면 마크업 언어란 무엇일까?마크업 언어는 정보를 "기록"하거나 "설명"하기 위한 언어로, 자바와 같은 “소프트웨어”를 만드는 프로그래밍 언어와는 다릅니다.4. 마크업 언어와 비슷한 이름 “마크다운 언어”HTML과 비슷한 개념으로 노션이나 Git..
유선준
'WEB' 카테고리의 글 목록