본문 바로가기

분류 전체보기510

[CS] google.com 을 입력하면 어떻게 될까? 먼저, 정리해보았다. 웹 브라우저에 URL을 입력하고 Enter 키를 누릅니다. 웹 브라우저가 도메인의 IP 주소를 조회합니다. (먼저 캐시를 찾고, 그다음 DNS를 검색합니다.) 웹 브라우저가 찾은 IP 주소를 기반으로 서버와의 TCP 연결을 시작합니다. 웹 브라우저가 HTTP 요청을 서버로 전송합니다. (필요한 경우, HTTPS 보안 통신이 진행됩니다.) 웹 서버가 요청을 처리하고 응답을 다시 웹 브라우저로 전송합니다. 웹 브라우저가 전송 받은 콘텐츠를 렌더링합니다. DNS(Domain Name System) - 도메인 네임 시스템은 URL들의 이름과 IP주소를 저장하고 있는 데이터베이스이다. - IP 주소는 숫자로 되어있는데 사용하기 쉽게 주소로 매핑을 해준다. ex) naver.com - DNS서.. 2022. 11. 12.
data.sql 적용하기 (스프링부트 버전 2.7.x 이상 ) application.yml 기준 spring: jpa: defer-datasource-initialization: true # 더미 데이터 적용 sql: init: mode: always # 더미 데이터 적용 resources 폴더 아래 data.sql 생성 DB에 먼저 넣어두고 싶은 sql 문을 작성해서 실행하면 완료. insert into ROLE (role) values ('USER'); 참고 https://devvkkid.tistory.com/262 data.sql이 동작하지 않을 때, 의심해봐야 할 것 스프링에서 test 패키지 내부에 data.sql을 넣은 것만으로도 data.sql 내부의 쿼리를 실행시킬 수 있다. 이런 방법으로 테스트용 더미 데이터를 생성하고 테스트를 동작시킬 수 있다. .. 2022. 11. 10.
Mockito BDDMockito 의 차이점 단위테스를 처음 작성하면서 스택오버플로우 및 여러 블로그를 참고했다. 어느 블로그에서는 When() . thenReturn() 으로 사용하는 것을 보고 참고해 작성하고 있는데, 다른 문제로 인해 스택오버플로우를 보니 given() . willReturn () 을 사용해서 작성했다. 두가지 모두 Mockito 를 사용하므로 동작에 대한 차이점은 없다고 한다. 나는 given() . willReturn() 방식이 가독성 면으로 편리해서 사용하기로 했다. 차이점에 대해서 자세한 내용은 아래 블로그를 참고했다. https://velog.io/@lxxjn0/Mockito%EC%99%80-BDDMockito%EB%8A%94-%EB%AD%90%EA%B0%80-%EB%8B%A4%EB%A5%BC%EA%B9%8C Mock.. 2022. 11. 4.
단위테스트(Unit Test) 를 작성하는 이유 단위테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위 테스트이다. 하나의 기능을 테스트하며, "어떤 기능을 실행하면 어떤 결과가 나온다" 라는 테스트를 진행한다. 장점 1. 의도한 대로 작동하는지 검증할 수 있다 2. 부수적으로 코드 변경에 의한 사이드 이펙트를 최대한 줄일 수 있는 예방책 3. 리팩토링으로 인한 코드 수정이 필요한 상황에서 유연하고 안정적인 대응 통합테스트는 서로 상호작용을 하는 서비스, 레포지토리 등 컴포넌트들이 구동된 상태에서 테스트를 진행하기 때문에, 비용이 상당히 커진다. 반면 단위테스트는 해당 부분만 독립적으로 테스트하기 때문에, 빠르게 실행하며 문제여부를 확인할 수 있다. 일반 애플리케이션은 1개의 기능을 처리하기 위해서는 다른 객체들과 서로 메시지를 주고받.. 2022. 11. 4.
데이터베이스(DB) 병행 제어 데이터베이스 관리 시스템에서는 여러 사용자가 동시에 데이터를 공유할 수 있도록 여러개의 트랜잭션이 동시에 수행되는 병행 수행을 지원한다. 하지만, 트랜잭션이 수행 중에 다른 트랜잭션이 같은 데이터에 접근해 값을 변경하면 예상치 못한 결과가 나올 수 있다. 따라서 병행수행을 하더라도 각 트랜잭션이 다른 트랜잭션에 방해를 받지 않도록 해야한다. 위와 같이 문제점을 해결하기 위한 것으로 병행 제어 , 동시성 제어 기법을 사용한다 제어가 없으면 여러 문제가 생길 수 있다. 하나의 트랜잭션이 끝나고 다른 트랜잭션이 개입해야한다. 갱신 분실 : 하나의 트랜잭션이 수행한 데이터 변경 연산의 결과를 다른 트랜잭션이 덮어써 변경 연산이 무효화 된다. 모순성 : 하나의 트랜잭션이 여러 개의 변경 연산을 실행할 때, 일관성.. 2022. 11. 1.
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 에러내용 Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. 에러원인 스프링 부트 초기 애플리케이션 시작 시 해당 에러발생. JDBC 초기설정이 필요하다. 에러조치 application.properties 는 아래와같은방법 spring.datasource.url=jdbc:[Database]://localhost:3306/[Database스키마] spring.datasource.username=[DB 아이디] spring.datasource.password=[DB 비밀번호] spring.datasource.driver-class-name=[JDBC 드라이.. 2022. 11. 1.
데이터베이스(DB) 장애와 회복 데이터베이스는 조직의 중요한 데이터를 보관하고 있는 만큼 장애가 발생했을 때 회복(복구) 하는 기능도 매우 중요하다. 회복은 장애가 발생하기 전의 상태로 되돌리는 것을 의미한다. 장애의 유형으로는 트랜잭션 장애, 시스템 장애, 미디어 장애로 나눈다. 트랜잭션 장애는 트랜잭션의 논리적 오류, 잘못된 데이터 입력, 시스템 자원 과다 사용 등 이유로 인해 발생한다. 시스템 장애는 하드웨어 이상으로 발생한 장애이다. 미디어 장애는 디스크 장치의 결함으로 발생한 장애이다. 데이터 베이스는 기본적으로 저장 장치에 저장되는데 저장 장치의 종류는 아래와 같다. 휘발성 저장장치 : 소멸성으로 장애가 발생하면 저장된 데이터가 손실된다. 비휘발성 저장장치 : 장애가 발생해도 저장된 데이터가 손실되지 않는다. 안정 저장 장치.. 2022. 10. 29.
docker 기초명령어 docker 기본 명령어 정리 ( cmd 창 기준 , httpd 기준 ) docker hub 에서 설치항목 및 설치 명령어를 확인할 수 있다. images : docker 에 설치된 프로그램 container : images 를 실행하는 것 https://docs.docker.com/ Docker Documentation docs.docker.com 목록 명령어 httpd 설치 ( 아파치 ) docker pull httpd 설치된 프로그램 조회 docker images 설치된 프로그램 으로 컨테이너 생성하기 ( httpd 기준 ) docker run httpd -> 이름이 랜덤하게 설정된다 docker run --name ws2 httpd -> 이름이 ws2 인 httpd 를 생성한다 사용하고 있는 프로.. 2022. 10. 29.
PSA(Portable Service Abstraction) 이란? PSA 는 한마디로 잘만든 인터페이스 라고 정의할 수 있다. 스프링을 사용하면 서비스 추상화를 통해 특정 환경이나 서버, 기술에 종속되지 않으며 유연한 애플리케이션 개발을 할 수 있다. 스프링에서는 추상화 계층을 통해 구체적인 기술과 환경에 종속되지 않도록 한다. 따라서, 추상화 계층을 사용해서 어떤 기술을 내에 숨기고 개발자에게 편의성을 제공해준다. 예로, ORM(객체 관계매핑) 이 새롭게 등장했을 때, ORM 기술을 사용하고 싶었다면, ORM 프레임워크 중 하나인 Hibernate를 사용해야 한다. 객체가 Hibernate 에 직접 의존하는 순간 기술에 종속적으로 되기 때문에, POJO 라고 할 수 없다. 스프링이 POJO를 유지하면서 Hibernate 를 사용할 수 있는 이유는 PSA 를 적용했기 .. 2022. 10. 28.