장단점 6

Springboot에서 외부 Redis에 값을 넣고 빼보자(feat.pipeline, Spring boot 3.0)

코드는 https://github.com/RyooChan/redis-pipeline/tree/main 여기서 확인 가능 Springboot에서 외부 Redis에 값을 넣고 빼보자(feat.pipeline, Spring boot 3.0) 해당 테스트를 하기 전에 Redis는 localhost가 아닌 외부에 존재한다고 가정한다. (외부 레디스를 사용하면 네트워크 지연 시간이 발생하게 될 것이다.) 알다시피 레디스는 굉장히 속도가 빠르다. 그렇지만 레디스와 서버는 TCP 네트워크 모델을 기반으로 통신한다. 이게 무슨 뜻일까... 하면, redis와 서버간의 통신 과정에서 TCP 3-way handshake를 따르고, 여러 번 통신을 하면 결국 속도에서 손해를 볼 수밖에 없다는 것이다. 한번 이를 테스트해 보자..

레디스를 로컬이 아닌 외부에 두는 이유

레디스를 로컬이 아닌 외부에 두는 이유 보통 우리가 공부할 때에는 레디스를 로컬에서 실행한다. 근데 회사를 가면 열에 아홉은 외부 레디스를 쓸 것이다. 로컬에서 실행할때 얻을 수 있는 장점은 빠른 속도 외부 레디스의 경우 통신 과정이 필요하므로 레이턴시가 걸리게 된다. 개발 및 테스트 개발 환경에서의 접근과 설정, 테스트가 용이하다. 정도일 것이다. 단점은 무엇일까?? 어쩌면 뻔하다고 생각될 수 있지만 다음과 같다. 데이터 손상 로컬에 레디스가 존재하는 경우 데이터가 손실될 염려가 더 크다. ex) 서버가 중단되는 경우 데이터의 손상 또 외부에 두게 되면 Redis자체적으로 제공되는 스냅샷을 백업하거나 디스크 로그에 저장하는 등등을 통해 데이터를 조금 더 편하게 저장 가능하다. 확장성 결국 로컬 컴퓨터에..

MA(모놀리식)와 MSA에 관하여

MA(Monolithic Architecture) 사전상으로 monolithic이란 단단히 짜여 하나로 되어 있는 정의되어 있다. 그 말 자체에서 알 수 있듯, 모놀리식 아키텍쳐란 전체 서비스를 하나의 서버에서 구동시키는 것이다. 간단히 말하자면 모든 서비스가 완전히 통짜로 짜여있다고 생각하면 편하다. 굉장히 많은 기업에서 아직 사용중인 방법이며, 명확한 장단점이 존재한다. MA의 장점 먼저 모든 기능들이 하나의 시스템 상에서 동작한다. 즉 개발 진행에 있어 속도가 빠르다는 장점이 있다. End-to-End 테스트가 간편하다. MA의 단점 유지보수할 때에 어려움이 따른다. 하나의 프로젝트에 모든 서비스가 동작하기 때문에 이를 고치기 위해서는 많은 내용들을 확인해 보아야 한다. CDCI를 진행할 때에도, ..

이론 정리 2022.04.07

싱글톤(Singleton) 패턴에 관하여

Singleton Pattern이란, 어플리케이션 실행 시 최초 한번만 메모리를 할당하고, 이 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴이다. 주로 DBCP(DataBase Connection Pool)처럼 공통 객체를 여러개 생성해서 사용해야 하는 경우 쓴다. 싱글톤 패턴의 장점 위에서 설명했듯, 싱글톤 패턴은 어플리케이션 실행 시 단 하나의 인스턴스를 한 번만 할당하게 된다. 따라서 만들어진 메모리 영역에 new연산자를 통해 접근하게 되면 이 접근에 대해 메모리 낭비를 방지할 수 있게 되며, 처음에 실행 시 만들어진 인스턴스에 접근만 하면 되므로 속도 측면에도 이득이 있다. 그리고 클래스 간 데이터 공유를 원할하게 해 준다. 싱글톤 패턴으로 만들어진 인스턴스는 static 전역 변수이기 때문이..

이론 정리/java 2022.04.03

REST api의 기초

REST Api의 기초 먼저 spring boot에서 @RestController란 @Controller와 @ResponseBody의 조합이다. Controller : Model객체를 통해 데이터를 전달하고, View를 찾아간다. RestController : 객체만을 반환한다. -> 객체는 주로 JSON나 XML형태로 http응답에 담아서 전송한다. Controller는 Spring 2.5버전에서부터, RestController는 spring 4.0버전에서부터 지원되었다. RestController 사용시 모든 메소드가 뷰 대신 객체로 작성된다. REST의 특징 Uniform Interface HTTP의 표준에 따른다면 언어에 종속되지 않고, 모든 플랫폼에서 사용 가능하다. Stateless REST는..

이론 정리 2022.02.27

java에서 String & StringBuffer & StringBuilder에 관해

java에서 String & StringBuffer & StringBuilder에 관해 String 먼저 java에서 String을 쪼개어 보면 이렇게 나온다. String -> final char[] 이걸 보면 자바에서 string은 final인 char의 배열로 선언되어 있다. 즉, String의 경우는 문자를 선언하게 되면 이것이 final형식으로 불변객체로 선언되게 된다. String에서 +연산자를 사용해 본 적은 있어도, -연산자롤 사용해 본 사람은 없을 것이다. 이는 String의 경우는 String pool영역에 있는 불변 객체이기 때문이다. 그렇다면 +연산자는 된다면.. String에 어떠한 값을 더하면 어떻게 될까? String str = "hell"; str += "o"; str += ..

이론 정리/java 2022.02.25