전체 글
-
동기와 비동기동기(Synchronous)동기 방식은 일련의 실행 과정이 순차적으로 진행되는 것을 말한다. 즉 한 작업이 마무리되기 전까지 다른 작업이 기다려야 한다는 의미이다. 이러한 동기 방식은 호출한 함수 혹은 작업이 반환될 때까지 실행 흐름이 차단되는 특징이 있다.비동기(Asynchronous)비동기 방식은 작업들이 독립적으로 실행되는 것을 의미한다. 그래서 작업의 완료 여부에 상관없이 다른 작업을 실행할 수 있다. 비동기 방식은 I/O 처리나 네트워크 요청과 같이 시간이 오래 걸리는 작업에 적용하는 방식으로, 콜백, 프로미스, async/await 등으로 구현 가능하다. 그렇다면 동기 방식으로 외부 서비스를 호출 및 처리하는 서비스에서 외부 서비스 장애가 발생하면 어떻게 해결할 수 있을까? 우선 ..
[매일메일] 동기 방식으로 외부 서비스 호출 시 외부 서비스 장애가 발생하면 해결 방법?동기와 비동기동기(Synchronous)동기 방식은 일련의 실행 과정이 순차적으로 진행되는 것을 말한다. 즉 한 작업이 마무리되기 전까지 다른 작업이 기다려야 한다는 의미이다. 이러한 동기 방식은 호출한 함수 혹은 작업이 반환될 때까지 실행 흐름이 차단되는 특징이 있다.비동기(Asynchronous)비동기 방식은 작업들이 독립적으로 실행되는 것을 의미한다. 그래서 작업의 완료 여부에 상관없이 다른 작업을 실행할 수 있다. 비동기 방식은 I/O 처리나 네트워크 요청과 같이 시간이 오래 걸리는 작업에 적용하는 방식으로, 콜백, 프로미스, async/await 등으로 구현 가능하다. 그렇다면 동기 방식으로 외부 서비스를 호출 및 처리하는 서비스에서 외부 서비스 장애가 발생하면 어떻게 해결할 수 있을까? 우선 ..
2025.01.21 -
@Component, @Controller, @Service, @Repository는 각 역할에 맞는 스프링빈을 등록할 때 사용하는 어노테이션으로 스프링의 컴포넌트 스캔에 의해 자동으로 빈으로 등록된다. @Controller, @Service, @Repository는 내부적으로 @Component를 포함한다. @Component가장 기본적인 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 스프링 빈을 나타낸다. 공통 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지 않는 일반적인 컴포넌트를 정의할 때 사용된다.@Controller스프링 MVC에서 웹 요청을 처리하는 컨트롤러 클래스에 사용된다. Dispatcher Servlet은 뭔데요?Dispatcher Servlet에 대해 알아보기 전에 아래..
[매일메일] @Component, @Controller, @Service, @Repository의 차이에 대해서 설명해주세요.@Component, @Controller, @Service, @Repository는 각 역할에 맞는 스프링빈을 등록할 때 사용하는 어노테이션으로 스프링의 컴포넌트 스캔에 의해 자동으로 빈으로 등록된다. @Controller, @Service, @Repository는 내부적으로 @Component를 포함한다. @Component가장 기본적인 어노테이션으로, 특정 역할에 종속되지 않는 일반적인 스프링 빈을 나타낸다. 공통 기능을 제공하는 유틸리티 클래스나, 특정 계층에 속하지 않는 일반적인 컴포넌트를 정의할 때 사용된다.@Controller스프링 MVC에서 웹 요청을 처리하는 컨트롤러 클래스에 사용된다. Dispatcher Servlet은 뭔데요?Dispatcher Servlet에 대해 알아보기 전에 아래..
2025.01.20 -
Dispatcher Servlet은 뭔데요?Dispatcher Servlet에 대해 알아보기 전에 아래 글에서 서블릿에 대해 알아보고 오자!⬇️ 서블릿이 뭐에요?스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래dockerel.tistory.com위에서 설명한 Dispatcher Servlet에서 요청을 처리하는 과정을 알아보았다. 근데 결론은 HTML을 랜더링 해서 보여주는 것이었는데, HTTP API처럼 JSON 데이터를 HTTP 메시지 body에서 직접 읽고 처리하려면 어떻게 해야 할까? 결론은 HTTP 메시지 컨버터를 사용하면 편리하게 데이터를 처리할 수 있다.위 그림에서 볼 수 있듯이 @ResponseBody 사용 시 문자는 StringConverter로 ..
HTTP 메시지 컨버터가 뭔데요?Dispatcher Servlet은 뭔데요?Dispatcher Servlet에 대해 알아보기 전에 아래 글에서 서블릿에 대해 알아보고 오자!⬇️ 서블릿이 뭐에요?스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래dockerel.tistory.com위에서 설명한 Dispatcher Servlet에서 요청을 처리하는 과정을 알아보았다. 근데 결론은 HTML을 랜더링 해서 보여주는 것이었는데, HTTP API처럼 JSON 데이터를 HTTP 메시지 body에서 직접 읽고 처리하려면 어떻게 해야 할까? 결론은 HTTP 메시지 컨버터를 사용하면 편리하게 데이터를 처리할 수 있다.위 그림에서 볼 수 있듯이 @ResponseBody 사용 시 문자는 StringConverter로 ..
2025.01.19 -
Dispatcher Servlet에 대해 알아보기 전에 아래 글에서 서블릿에 대해 알아보고 오자!⬇️ 서블릿이 뭐에요?스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래서 먼저 위키에 서블릿이 뭔지 찾아봤다.뭐 그렇다는데, 영한님의 강의에서는 이렇게 서블릿을 설명해dockerel.tistory.com 그럼 이제 이런 서블릿들이 있는데, 뭔가 이상하다고 느낄 부분이 있을 것이다. 현재는 아래와 같이 요청들이 처리 된다.이렇게 되면 각각의 서블릿에서 컨트롤러로 클라이언트의 요청을 처리한다. 근데 이러면 중복되는 부분이 너무 많아질 수 있다. 그래서 클라이언트 요청을 받는 서블릿 하나만 앞단에 두고 해당 서블릿이 요청 경로에 따라 컨트롤러를 매핑하게 바꿀 수 있다.이것을..
Dispatcher Servlet은 뭔데요?Dispatcher Servlet에 대해 알아보기 전에 아래 글에서 서블릿에 대해 알아보고 오자!⬇️ 서블릿이 뭐에요?스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래서 먼저 위키에 서블릿이 뭔지 찾아봤다.뭐 그렇다는데, 영한님의 강의에서는 이렇게 서블릿을 설명해dockerel.tistory.com 그럼 이제 이런 서블릿들이 있는데, 뭔가 이상하다고 느낄 부분이 있을 것이다. 현재는 아래와 같이 요청들이 처리 된다.이렇게 되면 각각의 서블릿에서 컨트롤러로 클라이언트의 요청을 처리한다. 근데 이러면 중복되는 부분이 너무 많아질 수 있다. 그래서 클라이언트 요청을 받는 서블릿 하나만 앞단에 두고 해당 서블릿이 요청 경로에 따라 컨트롤러를 매핑하게 바꿀 수 있다.이것을..
2025.01.19 -
동등성과 동일성?동등성과 동일성은 언뜻 들으면 비슷할 수 있긴 한데 결과적으로는 다른 개념이다. 쉽게 말하자면 동등성은 객체의 내용이 같은지를, 동일성은 메모리상에서 같은 객체인지를 의미한다. 맨날 이 둘이 헷갈려서 사전을 찾아봤다등급, 정도, 내용이 같다고 외우고동일성이 아얘 같은 것, 메모리 상에서 같은 걸 의미한다고 외워버렸다.자바에서는?자 그러면 자바 코드로는 어떻게 비교할까? 우선 동일성은 equals 메서드를 사용하여 비교할 수 있다.위와 같이 비교가 가능한데, 결국 말하고자 하는 건 객체 안의 내용이 같아야 한다는 것이다.그런데 위와 같이 작성하면 사실 안된다.equals와 hashCode객체에서 equals 오버라이딩을 하려고 하면 다음과 같이 나타난다.hashCode가 같이 세트로 오버라..
[매일메일] 동등성과 동일성에 대해서 설명해주세요.동등성과 동일성?동등성과 동일성은 언뜻 들으면 비슷할 수 있긴 한데 결과적으로는 다른 개념이다. 쉽게 말하자면 동등성은 객체의 내용이 같은지를, 동일성은 메모리상에서 같은 객체인지를 의미한다. 맨날 이 둘이 헷갈려서 사전을 찾아봤다등급, 정도, 내용이 같다고 외우고동일성이 아얘 같은 것, 메모리 상에서 같은 걸 의미한다고 외워버렸다.자바에서는?자 그러면 자바 코드로는 어떻게 비교할까? 우선 동일성은 equals 메서드를 사용하여 비교할 수 있다.위와 같이 비교가 가능한데, 결국 말하고자 하는 건 객체 안의 내용이 같아야 한다는 것이다.그런데 위와 같이 작성하면 사실 안된다.equals와 hashCode객체에서 equals 오버라이딩을 하려고 하면 다음과 같이 나타난다.hashCode가 같이 세트로 오버라..
2025.01.18 -
스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래서 먼저 위키에 서블릿이 뭔지 찾아봤다.뭐 그렇다는데, 영한님의 강의에서는 이렇게 서블릿을 설명해주셨다. WAS(웹 어플리케이션 서버)를 구현하려면 아래와 같이 여러 작업을 해야한다.서버 소켓 연결HTTP 요청 메시지 파싱...비즈니스 로직 실행 및 디비에 저장...HTTP 응답 메시지 생성 및 전달소켓 종료이렇게 많은 동작을 필요로 하는데, 서블릿을 지원하는 WAS 사용시 위와 같이 비즈니스 로직 실행 및 디비 저장하는 부분 외에 귀찮은 부분들을 다 처리해준다. 그래서 개발자가 WAS를 더 쉽게 개발할 수 있게 되는 것이다. WAS는 Web Server + Web Container(Sevlet Container)로..
서블릿이 뭐에요?스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래서 먼저 위키에 서블릿이 뭔지 찾아봤다.뭐 그렇다는데, 영한님의 강의에서는 이렇게 서블릿을 설명해주셨다. WAS(웹 어플리케이션 서버)를 구현하려면 아래와 같이 여러 작업을 해야한다.서버 소켓 연결HTTP 요청 메시지 파싱...비즈니스 로직 실행 및 디비에 저장...HTTP 응답 메시지 생성 및 전달소켓 종료이렇게 많은 동작을 필요로 하는데, 서블릿을 지원하는 WAS 사용시 위와 같이 비즈니스 로직 실행 및 디비 저장하는 부분 외에 귀찮은 부분들을 다 처리해준다. 그래서 개발자가 WAS를 더 쉽게 개발할 수 있게 되는 것이다. WAS는 Web Server + Web Container(Sevlet Container)로..
2025.01.18 -
코딩애플 정규화 영상 3번, 학교 강의 1번, 복습 1번 했지만 아직 애매한 정규화...데이터 정규화 우선 데이터 정규화에 대해 설명하기 전에 관계형 DB를 사용하는 이유부터 생각해보자. 첫 번째는 데이터 저장을 위해서이고 두 번째는 데이터의 중복을 줄이기 위해서이다. 개요 그러면 관계형 스키마를 위한 가이드라인부터 한번 알아보자. 이것만 지키면 최고의 스키마?? 1. Making sure the semantics of the attributes 즉, 엔티티를 섞지 말라는 말이다. 오직 foreign key로만 다른 엔티티를 가리켜야 한다. 2. Reduce the redundant information in tuples redundancy(중복)이 생기면 update 이상이 생길 수 있다. 이때 upd..
데이터 정규화코딩애플 정규화 영상 3번, 학교 강의 1번, 복습 1번 했지만 아직 애매한 정규화...데이터 정규화 우선 데이터 정규화에 대해 설명하기 전에 관계형 DB를 사용하는 이유부터 생각해보자. 첫 번째는 데이터 저장을 위해서이고 두 번째는 데이터의 중복을 줄이기 위해서이다. 개요 그러면 관계형 스키마를 위한 가이드라인부터 한번 알아보자. 이것만 지키면 최고의 스키마?? 1. Making sure the semantics of the attributes 즉, 엔티티를 섞지 말라는 말이다. 오직 foreign key로만 다른 엔티티를 가리켜야 한다. 2. Reduce the redundant information in tuples redundancy(중복)이 생기면 update 이상이 생길 수 있다. 이때 upd..
2024.12.02 -
Indexing이 뭔가요? 위 사진과 같이 다른 테이블, 엔트리로 빠르게 안내해주는 보조 접근 방식이라 생각하면 된다. 이로 인해 원하는 데이터에 빠르고 효율적이게 접근이 가능하다. 이러한 Index는 Single-Level과 Multi-Level Indexes로 나눌 수 있다.Single-Level Indexes Single-Level Indexes의 Index Table에는 Index value와 해당 Disk block을 가리키는 Pointer가 있다. 이때 Index value들은 정렬되어 있고, 당연하지만 원래 데이터 파일보다 작다는 특징이 있다. Single-Level Indexes는 Primary Indexes, Clustering Indexes, Secondary Indexes로 나눠진다...
IndexingIndexing이 뭔가요? 위 사진과 같이 다른 테이블, 엔트리로 빠르게 안내해주는 보조 접근 방식이라 생각하면 된다. 이로 인해 원하는 데이터에 빠르고 효율적이게 접근이 가능하다. 이러한 Index는 Single-Level과 Multi-Level Indexes로 나눌 수 있다.Single-Level Indexes Single-Level Indexes의 Index Table에는 Index value와 해당 Disk block을 가리키는 Pointer가 있다. 이때 Index value들은 정렬되어 있고, 당연하지만 원래 데이터 파일보다 작다는 특징이 있다. Single-Level Indexes는 Primary Indexes, Clustering Indexes, Secondary Indexes로 나눠진다...
2024.12.02