전체 글 썸네일형 리스트형 클라우드 네이티브란? 1. 개요 이전의 많은 IT 회사들은 자신의 회사 내부에 서버 장비 및 소프트웨어를 설치하여 서비스를 제공해 왔습니다. 이를 온프레미스방식이라 합니다. 이와 대조적으로, 클라우드 네이티브는 AWS와 같은 클라우드 서비스 제공 업체가 제공하는 서버에 서비스를 설치하여 서비스를 제공하는 방법입니다. 즉, 두 개의 가장 큰 차이점은 회사 내 하드웨어 서버의 존재 유무입니다. 온프레미스 방식은 회사에 하드웨어 서버가 있는 것이고, 클라우드 네이티브 방식은 회사 내에 하드웨어 서버가 없습니다. 2. 클라우드 네이티브 클라우드 환경에서 소프트웨어(서비스)를 개발, 배포, 운영, 확장하는 방식. 네이티브(Native)란, 어떤 지역이나 특정 환경에서 자연적으로 존재하는 것을 의미합니다. 여기서 클라우드 네이티브는 이.. 더보기 REST API와 HTTP Header REST APIREST(REpresentational State Transfer)의 약어로,인터넷을 통해 통신할 수 있게 하는 인터페이스입니다. 조금 더 자세히 설명하면,REST API는 HTTP URI를 통해 제어할 자원(Resource)을 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처입니다. 위 아키텍처 방법을 통해 전송하는 것이 REST API 입니다.💡 REST API는 TCP/IP 프토로콜의 5계층인 응용 계층에 해당됩니다. REST API의 요청과 응답은 Header와 Body 부분이 있습니다. HTTP HeaderHeader는 요청과 응답에 대한 전반적인 정보를 담고 있습니다. HTTP 1.1 버전의 경.. 더보기 Mybatis selectKey 사용 방법 1. selectKey란? Mybatis는 DB에서 특정 값을 가져와서 쓸 수 있도록 selectKey 기능을 제공합니다. 보통 id 값을 auto-increment 해서 사용합니다. selectKey를 이용하면, 이 id 값을 바로 가져와서 쓸 수 있습니다. 밑에서 제가 사용할 도메인 코드는 다음과 같습니다. public class City { private int id; private String name; private String countryCode; private String district; private int population; // getter, setter 생략 } 2. selectKey 사용 방법 selecKey는 크게 after, before 방법으로 나눌 수 있습니다. 2.1 .. 더보기 Spring Web의 두 가지 기본 Context Context란 무엇일까요? 스프링이 관리하는 빈(Bean)을 담아두는 컨테이너라고 생각하시면 됩니다. Spring 프로젝트를 만들면 기본적으로 두 가지 컨텍스트가 만들어집니다. 첫 번째는 ApplicationContext입니다. 두 번째는 WebApplicationContext입니다. ApplicationContext는 주로 Service, Dao등 프로젝트 전체에서 공유하는 빈들을 저장합니다. WebApplicationContext는 주로 Controller와 같이 특정 서블릿(DispatcherServlet)에서만 사용되는 빈들을 저장합니다. Spring Web Mvc에서 빈을 참조할 때, 우선적으로 WebApplicationContext를 참조 하고 빈을 찾지 못하면 ApplicationConte.. 더보기 Spring Web MVC 동작 과정 스프링으로 웹 서버를 만들면, 특별한 서블릿을 바탕으로 사용자의 응답을 받을 수 있습니다. 이 서블릿 이름이 DispatcherServlet입니다. 스프링은 이 DispatcherServlet으로 사용자의 요청을 받고, 처리한 뒤 반환을 합니다. 그림은 아래와 같습니다. 위 그림의 순서를 바탕으로 설명을 덧붙여 보겠습니다. 1. DispatcherServlet이 Client로 부터 요청을 받음 2. DispatcherServlet이 어떤 컨트롤러 메소드에 가야하는지 HandlerMapping에 물어봄 3. HandlerMapping은 url에 매턴에 맞는 Controller와 메소드의 정보를 DispatcherServlet에 제공함 4. 응답을 받은 DispatcherServlet은 Conroller에게.. 더보기 findAll과 findById 조회의 차이 한 프로젝트에서 테스트케이스를 작성하는데, findAll에서 에러가 발생했습니다. member 객체를 mock으로 생성해서 발생하는 문제였습니다. mock객체는 가짜 객체입니다. mock으로 객체를 만들면 실제 값은 null입니다. mock객체의 모든 값은 null이지만 when으로 선언하면, Mockito가 프록시 방식으로 실제 동작할 때 값 대체합니다. 💡 여기서 프록시 방식이란, 요청을 가로채서 동작하는 방식을 의미합니다. 저는 테스트케이스 내부에 아래와 같이 영속성에 추가해줬습니다. 그러면, 모든 값이 null인 member mock 객체가 영속성 컨텍스트에 저장됩니다. 💡 entityManager를 통해 영속성 컨텍스트에 접근할 수 있습니다. 아래 테스트케이스를 보면 findById는 제대로 동.. 더보기 백준 - 3197 백조의 호수(Java) 구현 문제입니다. 물과 인접한 얼음이 1초마다 없어지는데, 몇 초 후에 두 마리의 백조가 만나는지 구하는 문제입니다. 얼음을 녹이고 백조를 움직이면 입력 범위가 매우 커 시간 초과가 발생했습니다. 때문에 저는 두 가지 방법을 통해 이 문제를 해결했습니다.얼음 두께 구하기한 마리의 백조만 이동 1. 얼음 두께 구하기얼음 두께는 물과의 최대 거리가 됩니다.즉, 얼음 두께만큼 시간이 지나야 해당 얼음이 녹아 물이 됩니다. 이는 네 방향으로 알 수 있습니다.다음과 같은 얼음이 있다고 하겠습니다. 우선 오른쪽 방향으로 얼음의 두께를 확인합니다.물을 0로 두고, 얼음을 1로 둔 상태의 누적 최솟값을 구하는 것과 같습니다. 왼쪽으로 최솟값을 갱신합니다. 아래로 최솟값을 갱신합니다. 위로 최솟값을 갱신합니다. 즉, .. 더보기 @WebMvcTest 옵션으로 특정 클래스 지정하기 @WebMvcTest에 옵션을 지정해서 특정 컨트롤러 클래스만 빈으로 등록해서 가져오는 기능이 있습니다. 아래의 에러를 만나고 나서야 저는 이 기능을 알게 되었습니다. Error creating bean with name 'mailAuthController' defined in file 저에게는 두 개의 컨트롤러가 있습니다. @RestController @RequestMapping("/api/v1/auth") @RequiredArgsConstructor public class MailAuthController { private final SendMailUseCase sendEmailUseCase; } @RestController @RequiredArgsConstructor public class Post.. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 48 다음