우리가 어레이리스트 리스트 맵 셋 이런 친구들을 컬렉션 프레임워크라고 한다. 미리 용도에 맞게 어떤 집합이나 모음으로 만들어져있는것이다. 우리가 사용하는 대부분의 어플리케이션은, 웹과 연동되어 있다. 클라이언트, 서버 의 2티어 아키텍처 모델, 클라이언트, 서버, 데이터베이스의 3티어 아키텍처 모델 둘다 웹이 필요하다. 서로 통신해야하기 때문이다. 그럼...
HATEOAS 들어가기 앞서, REST API 4단계에 대해 간략하게 이야기 하겠다. (REST API : 자원 중심으로 HTTP 프로토콜과 매서드를 사용하는 RESTful한 API) 0단계 : HTTP 프로토콜 사용하기. 1단계 : 자원 중심으로 설계하기. 2단계 : CRUD에 맞게 HTTP 메소드 사용하기 • 회원 목록 /members -> GET...
스트림이란? 출처 : https://m.hankookilbo.com/News/Read/201807240998081447 영어에서 스트림(stream)의 사전적 의미는 위의 사진과 같은 “흐름”을 의미. 이와 유사하게 자바에서의 스트림은 “데이터의 흐름”을 의미. 좀 더 구체적으로, 각 데이터를 흐름에 따라 우리가 원하는 결과로 가공하고 처리하는 일련의...
Spring Jdbc Template Spring JDBC Template은 JDBC를 편리하게 사용하기 위한 도구이다. 어떤 역할을 하냐면, 커넥션 획득 데이터베이스와의 연결을 생성하고 관리하기 위해 커넥션 획득. (커넥션이란, 데이터베이스와의 연결을 나타내는 객체) Statememt 준비 및 실행 실행할 SQL문 생성, 필요한 매개변수 설정. ...
스트림으로 데이터 수집하기 컬렉터란 무엇인가? 우리는 지금까지 최종연산에서 List 객체로 결괏값을 도출하기 위해 toList를 Collector 인터페이스의 구현으로 사용했다. 대표적인 예제가 이다. 그런데 어떻게 가 List 객체를 반환할 수 있었을까? 이 질문에 대한 대답으로, 컬렉터는 고급 리듀싱 기능을 수행한다. 즉, 리듀싱 연산을...
RepositoryTest중 마주친 에러 나는 개발할 때 내부 인메모리 DB가 아닌 MySQL을 사용하기로 했다. (이전에 H2 사용해서, 또다른 경험을 하고자 + MySQL 더 익숙해지고자) save의 테스트코드를 아래와 같이 작성했고, @DataJpaTest만 붙이고 Repository의 save 테스트를 진행하면, Failed to load Ap...
OAuth2란? OAuth 2는 특정 어플리케이션(내 프로젝트)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 어플리케이션 (GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource(계정 정보, 지도 정보 등의 API를 통해 내가 사용하고자 하는 외부 데이터)...
들어가기 앞서 보통 프로젝트를 진행하면 서버 개발이 보통이다. 하지만!! 서버가 어떻게 돌아가고 있는지 모니터링 또한 서버 유지, 보수 측면에 있어서 굉장히 중요한 요소이다. 즉, 서버 VM의 CPU, 메모리, 커넥션 사용, 고객 요청 수 같은 지표들을 확인해야 한다. 예시 : EC2 VM 지표들 오늘은, 프로메테우스와 그라파나를 이용해 스프링 기반 어...
들어가기 앞서 이전에 서버 모니터링을 위한 프로메테우스, 그라파나 사용법을 포스팅한적이 있다. https://velog.io/@dlsrjsdl6505/Spring-%EA%B8%B0%EB%B0%98-Prometheus-Grafana%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%...
들어가기 앞서 스프링 부트 액추에이터는 서버의 매트릭 정보를 알려준다. 마이크로미터는 해당 매트릭 정보를 프로메테우스가 알 수 있도록 약간 변형시켜준다. (. 방식의 경로를 _ 방식으로) 프로메테우스는 마이크로미터가 변형해준 액추에이터의 메트릭 정보를 수집하고, 그라파나는 해당 정보를 그래프, 게이지 등으로 시각화해준다. 스프링부트 액추에이터에 관해 더 ...
들어가기 앞서 (해당 포스팅은, H2, Spring 구성 등등의 기본적인 내용은 생략했습니다!) MyBatis, JPA, Spring data JPA, JDBC Template, Querydsl 등 DB 관련 기술 스택들이 많이 있다. 대다수 실무에서는 Spring data JPA를 사용하고, 나도 프로젝트를 할 때는 항상 Spring data JPA...
들어가기 앞서 스프링 부트 액츄에이터의 메트릭, 마이크로미터의 프로메테우스 매트릭 수집을 위한 도움, 프로메테우스의 메트릭 수집, 그라파나 의 시각화까지. 지난 포스팅에서 서버에 들어오는 CPU, RAM의 부하, DB 커넥션 풀 관리, 로그 등등의 시스템 매트릭들에 대해 살펴보았다. https://velog.io/@dlsrjsdl6505/spring-...
해당 내용은 김영한님 스프링 핵심 원리 - 기본편 강의를 보고 작성되었습니다! 들어가기 앞서 이전 강의 내용인 서비스로직, 비즈니스로직과 대충의 컨트롤러는 예제 만들기 파트이기 때문에, 구현했다는 가정 하에 설명드리겠습니다! :) 개발할 전체 다이어그램은 다음과 같습니다. 새로운 할인정책 개발 이전에는 DiscountPolicy 인터페이스를 상속받는 ...
들어가기 앞서 해당 내용은 https://velog.io/@dlsrjsdl6505/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EC%9D%B4%ED%95%B4-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%EC%9B%90%EB%A6%AC-%EC%A0%81%E...
들어가기 앞서 코드 내용은 https://velog.io/@dlsrjsdl6505/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EC%9D%B4%ED%95%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%...
들어가기 앞서 해당 글은, https://velog.io/@dlsrjsdl6505/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EC%9D%B4%ED%95%B4-%EC%8B%B1%EA%B8%80%ED%86%A4-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88 에 이...
들어가기 앞서 SOLID원칙은 참 어려운 원칙이다. 정답이 존재하지 않고, 또 더 나아지는 코드를 만들 방법은 무한하기 때문이다. 우리는 SOLID원칙을 잘 준수하기 위해 공통 모듈은 분리하고, 확장은 용이하게, 가독성 또한 좋게, 등등의 방법을 사용한다. 그 여러 방법중에서 적절하게 분리를 잘 시키기 의 방법도 있다. 잘 분리된 정말 쉬운 예시는 다...
들어가기 앞서 혹시 toString() 매서드를 알고 있는가? 직관적으로 해석해도, String으로 만든다. 라는 느낌이다. 음.. 무슨소리인지 모르겠는 걸? 헤헤.. 싶으시면 다음 코드를 보자. 해당 코드의 실행 결과는 아래와 같다. 나는, 숫자 ArrayList 혹은 문자 ArrayList의 toString매서드를 만든적이 없다. 그런데 어떻게 ...
들어가기 앞서 서블릿이 뭘까? 우선, 정적 웹사이트와 동적 웹사이트의 차이를 보자. 정적 웹사이트 : http://www.chrissawyergames.com/ (이상한 사이트는 아니고, 롤러코스터 타이쿤을 만든 개발자의 홈페이지이다.) 동적 웹사이트 : https://www.naver.com/ ![](https://velog.velcdn.co...
커넥션 풀 이해 커넥션 객체는, DB와 내 소스코드를 연결(connect)해주는 객체이다. 풀은 취준하는 우리라면 많이 보았을 글, 인재 pool 상시 등록 이라는 말처럼, 모으다 라는 동사이다. 그럼 커넥션 풀은, 커넥션 객체를 모으다 라는 뜻이 된다. 일단, 먼저 커넥션 풀 없이, DB 커넥션을 매번 획득하는 경우를 생각해보자. 그럼 커넥션을 얻는...