본문 바로가기

분류 전체보기270

[MSA] API Gateway - 머리부터 발끝까지(1) 회고 글에서 적었듯이 올해는 MSA에 대해서 공부를 해보려한다. 그 중에 첫번째로 API Gateway에 대해 공부를 해보자. API Gateway란? MSA는 간단하게 말해서 Monolithic구조의 서비스를 여러개의 서비스로 쪼개어 관리하는 아키텍쳐다. 수 많은 API 호출이 이뤄질텐데, 매번 따로따로 공통된 로직(ex : 인증/인가)을 구현하고 관리해야한다면? 이는 리소스 낭비임에 분명하다. API Gateway를 도입하자! 특징 API Gateway는 API 서버 앞단에서 모든 Request 엔드포인트를 단일화 해주는 역할을 한다. 그로인해 API 통신량이 줄어들어 대기시간을 줄일 수 있고, 효율성이 높아진다. 모든 요청이 들어오는 통로이기 때문에, 공통 부분(ex: 인증/인가)을 처리하기 좋다... 2021. 1. 13.
2020년 회고 (feat. 만 2년 주니어 개발자) 2021년 새해가 밝았다. 올해의 첫 글은 2020년에 대한 회고글이 될 것이다. 작년 회고글에서 올해의 목표는 인터넷 강의로 내가 경험하지 못하는 부분을 채우고자 목표했었다. 그리고 하나 둘 차곡차곡 장바구니에 주워 담았다. 문득 궁금해졌다. 얼마나 주워 담았을까?? 금액으로 환산해보니 약 94만 원 정도가 나왔다. 네? 94만 원이요? 솔직히 놀랐다ㅋㅋㅋㅋ TMI ) 94만 원은 약 한 달에 8만 원 정도인데, 내 교통비가 9만 원 정도 나온다. 흠 이렇게 보니 별로 안 쓴 것 같기도.. 나의 강의 목록을 보면 알 수 있듯이 2020년에는 주로 JPA와 Spring에 대해 공부를 했다. JPA는 아예 처음 학습하는 분야였지만, 제일 재밌게 학습한 것 같다. 강의 내내 우와 신기하다 하면서 들었던 기억.. 2021. 1. 5.
[DB] Redis 란? (feat. Memcached) 레디스 (Remote Dictionary Server)는 메모리 기반의 key-value 구조의 데이터 관리 시스템이다. 모든 데이터를 메모리에 저장하고 조회하기때문에 빠른 Read, Write 속도를 보장하는 NoSql이다. 속도가 빠른 이유 ? 메모리 접근이 디스크 접근 방식보다 빠르기 때문. Redis의 기능 In-Memory 캐싱 Pub/Sub 메세지 큐 세션 스토어 Redis가 지원하는 데이터 형식 String Set Sorted Set Hash List Redis의 특징 영속성을 지원하는 In-memory 데이터 저장소 읽기 성능 증대를 위한 서버 복제 지원 Redis가 실행중인 서버에 장애가 발생하는 경우 장애 조치와 더 높은 읽기 성능을 지원하기 위해 슬레이브가 마스터에 연결되고, 전체 D.. 2020. 11. 30.
[DB] RDBMS vs NoSQL RDB를 써야 할까? NoSql을 사용해야 할까? NoSql은 어떨 때 사용하는 걸까? 궁금증으로부터 출발했다. RDBMS와 NoSQL에 대해서 알아보자. RDB(Relational Database) 특징 구조화된 쿼리 언어(Structured Query Language) 정해진 데이터 스키마에 따라 DB 테이블에 저장된다. 관계를 통해 연결된 여러 테이블에 분산된다. 관계형 데이터베이스로 대표적으로 MySql, Oracle, PostgreSql 등이 있다. 장점 각 테이블에 정의된 구조(필드명, 데이터 유형)가 있기 때문에 스키마를 준수하지 않는 레코드는 추가할 수 없다. 관계에 의해 데이터를 여러 테이블에 나누어 저장하기 때문에 중복 데이터가 없다. 복잡한 형태의 쿼리(join)가 가능하다. 단점 대.. 2020. 11. 27.
메일 발송시 blob 데이터 처리 blob 데이터 처리 첨부파일이 아닌, 파일을 byte 형태의 데이터로 변환해 메일을 전송해야했다. 그러기 위해서는 Oracle DB에 저장할 때 blob 타입의 칼럼을 사용해야 했다. 엄청난 삽질 끝에 알게된 내용을 미리 공유하자면, MIME에서 정의하는 전자 메일 base64는 임의의 바이트 스트림을 화면에 표시할 수 있는 ASCII 문자들로 바꾸는 인코딩 방식을 말한다. 바이트 데이터를 메일에서 사용하기 위해서는 반드시 base64로 인코딩을 해야한다. 또한, blob 칼럼의 default length는 4000이다. 아래와 같은 쿼리 방식으로 인코딩을해서 데이터를 가져올 수 있다. SELECT (UTL_ENCODE.BASE64_ENCODE(content1)) AS ATTACH1 FROM conte.. 2020. 10. 28.
[ActiveMQ] Producer.send 파헤치기 분명 producer를 생성하는 로직이 있을텐데 아무리 찾아봐도 내용을 가져와 조립하고 mqAutoResProducer.send(response); 에서 끝나고있었다. 어떻게 producer가 생성되는지 궁금했기 때문에, send 부분을 파헤쳐보기로했다. Producer.send(Response) 과정 try{ ... mqAutoResProducer.send(response); ... } //Producer 시작 private JmsTemplate jmsTemplate; private String destination; @Override public void send(final Response response) { jmsTemplate.convertAndSend(destination, response);.. 2020. 10. 24.