분류 전체보기 555

도커 네트워크 (with 아키텍처)

이번 포스팅에선 도커, 그 중에서 도커 네트워크에 대해서 알아보도록 하겠습니다. 도커 네트워크에 대해서는 구글링하면 bridge니 host니 overlay니 많이 나와있으니 흔히 구글링하면 나오는 내용 말고 좀 더 딥한 내용을 다뤄보려고합니다.  제가 도커 네트워크를 공부해야겠다고 생각하게 된 계기는 제가 너무 도커에 대해서 아무것도 모르고 도커를 사용하고 있던 것을 발견했습니다.  그냥 Dockerfile만들고 build하고 docker-compose에 등록해서 관리하면 끝!  사실 이게 끝일 정도로 도커 자체는 정말 간단하긴 하지만 도커를 조금 더 깊이있게 공부해야겠다는 마음으로 도커 카테고리를 약 1년만에 부활시켰습니다.  이번엔 도커 네트워크에 대해서 딥다이브하는 시간을 가져보겠습니다.  도커 아..

DevOps/Docker 2024.05.27

AWS로 3 Tier Architecture 고도화하기

이번 포스팅에선 AWS를 다채롭게 사용하여 대부분의 웹을 이루고 있는 3티어 아키텍처를 고도화하는 과정을 포스팅해보도록 하겠습니다.   3 Tier Architecture3계층 구조라고도 불리는 이 아키텍처는 현재 대부분의 웹의 구조입니다.  이 3티어 아키텍처 말고도 1티어 2티어도 있는데 그냥 티어라는 것은 "서버를 물리적으로 분리했다"라고 생각하시면 됩니다.  1티어 2티어 아키텍처에 대한 내용은 구글링하시면 쉽게 접할 수 있는 내용이기 때문에 이번 포스팅에선 넘어가도록 하겠습니다. 저는 3티어 아키텍처만 집중적으로 파보겠습니다.  클라이언트 계층흔히 정적 데이터(html, css, js, image)들이 들어가있는 계층으로서 3티어 아키텍처에선 주로 웹서버가 이 자리를 차지하고 있습니다.  웹에선..

DevOps/AWS 2024.05.25

아파치 카프카 (개념)

저번 포스팅에서 파트2를 시작하면서 메세지 브로커의 장을 열었습니다. 메세지 브로커를 이용해서 서버간 통신을 조금 더 매끄럽게 진행할 수 있다는 것을 알았고 어떤 모델이 있는지 알았습니다.  이번엔 Pub/Sub 메세징의 대표주자 아파치 카프카 (Apache Kafka) 에 대한 개념을 잡아보도록 하겠습니다.  구글 트렌드 위의 그래프는 구글 트렌드에서 검색한 Kafka와 RabbitMQ에 대한 트렌드 추이입니다.  기본적으로 Kafka에 대한 검색량이 높고 특징으로는 2022년에 들어오면서 갑자기 70퍼센트대로 올라왔다는 것이 눈에 띕니다.  이는 한국에서 보이는 추이이고 이번엔 글로벌로 보겠습니다.   글로벌도 상황은 비슷해보이네요. 역시 2022년에 카프카에 대한 수치가 올라간 것이 특징입니다. R..

DevOps/Apache Kafka 2024.05.18

개발 하다 보면 많이 접하는 스프링 빈 직접 등록하기 : 활용편

우리는 스프링을 사용하면서 너무 편하게 개발하고 있습니다. 스프링이 정해둔 규칙대로 프로그래밍하면 되기 때문에 정말 쉽게 개발할 수 있죠.  하지만 이게 쉽긴하지만 마냥 쉽진 않습니다. "스프링이 정해둔 규칙" 이라는게 정말 넓고 깊은 지식을 요구하거든요.  일례로 스프링 시큐리티같은 것만 하더라도 "스프링이 정해진 규칙" 이지만 시큐리티를 처음 보는 사람들은 이게 만만치않게 힘들겁니다.  이번에 포스팅할 스프링 빈을 직접 등록하는 것도 마찬가지일 것이라고 생각합니다. 마냥 컴포넌트 스캔을 이용해서 빈을 등록했고 구글링한 예제 코드에서도 @Bean을 이용해서 빈으로 등록하라고는 했지만 어떻게 동작하는 것이고 어떻게 사용하는 것인지 처음엔 알기 쉽지 않거든요.  어떻게 빈을 직접 등록하는 것인지 어떤 상황..

Spring/Spring 2024.05.15

코딩 스탠다드 5 : 강타입 언어라면 강타입 언어의 장점을 적극 활용하자 (HTTP Request)

이번엔 HTTP Request 에서 강타입을 활용해 안정성을 높이는 방법에 대해 포스팅해보고자합니다.  스프링은 백엔드 서버로 주로 사용됩니다. 그래서 수많은 API들을 가지고 있고 그 API마다 프론트에서 원하는 포맷으로 데이터를 쏴주는 역할을 하죠.  보통 프론트엔드와 통신을 할 때 HTTP 통신을 사용하기 때문에 보통 회사에서 RESTful 하게 API를 만들고 Request를 json으로 받곤합니다.  이때! 자바의 강타입을 활용하면 큰 이득을 볼 수 있습니다.  이번 포스팅에선 강타입을 활용해 HTTP Request 를 안정적으로 받는 방법과 어노테이션을 이용해 Validation을 효과적으로 처리하는 방법까지 보너스로 알아보도록하죠! 시작은 늘 그렇듯 상황을 가정하고 들어갑니다. 이번엔 특별히..

코딩 스탠다드 4 : 강타입 언어라면 강타입 언어의 장점을 적극 활용하자 (String 을 지양해야 하는 이유)

이번엔 방법론에 대해서 포스팅해볼 생각입니다.  프로그래밍 언어는 크게 두가지로 나눌 수 있습니다. 바로 강타입 언어와 약타입 언어. 흔히 알려지기론 로우레벨, 하이레벨로 나누는 것과 일맥상통합니다.  강타입 언어는 타입이 딱딱 정해져있는 언어입니다. 자바나 C계열을 사용하신다면 int, String, long, boolean 이런 타입들이 익숙하실겁니다. 이렇게 딱딱 정해져있는 것이 바로 강타입 언어입니다. 강타입 언어에는 C, C++, C#, Java 정도가 있습니다. 물론 더 있지만 제가 아는 선에선 이거밖에... 약타입 언어는 타입이 런타임에 정해지는 언어입니다. 자바스크립트나 파이썬을 사용하신다면  익숙한 var 같은 타입이 바로 약타입입니다. 약타입 언어에는 자바스크립트, 파이썬, 코틀린 등이..

코딩 스탠다드 3 : StreamAPI로 처리할 수 있는 반복문은 StreamAPI로 처리한다.

이번엔 for 문과 관련된 코딩 스탠다드입니다.   StreamAPI에 대한 내용이기 때문에 관련된 개념을 숙지하고 계시면 좋습니다! https://coding-review.tistory.com/490 Java8 StreamAPIStreamAPI는 제가 자주 사용하는 문법 중 하나인데, 정작 뭐가 어떻게 동작하는지는 잘 모르고 썼던 것 같습니다. 그래서 정리하면서 사용법까지 훑어보도록 하겠습니다.  StreamAPI란?자바8부터 지coding-review.tistory.com 왜 "StreamAPI로 처리할 수 있는 것만 StreamAPI로 처리해야" 하냐에 대해서 먼저 말씀드리겠습니다.  StreamAPI를 쓰면 확실히 코드가 간드러지긴합니다. 들여쓰기도 없고 한줄에 집약해서 숏코딩할 수 있는게 정말 ..

코딩 스탠다드 2 : Optional 을 활용한 null 체크

이번엔 Optional을 활용해 null 체크를 하는 코딩 스탠다드에 대해서 포스팅해볼까합니다.  Optional에 대한 더 자세한 내용은 망나니개발자님 포스팅을 참고해주세요! 아래의 포스팅이 Optional에 대해서 잘 설명이 되어있습니다.  https://mangkyu.tistory.com/203 [Java] 언제 Optional을 사용해야 하는가? 올바른 Optional 사용법 가이드 - (2/2)앞선 포스팅에서는 Optional의 개념과 문법을 살펴보았습니다. Optional은 Null이 될 수 있는 객체를 감싸는 Wrapper 클래스이기 때문에 비용이 발생합니다. 그래서 Optional은 필요한 경우에만 사용하는mangkyu.tistory.com 우리는 상황을 하나 가정하고 Optional을 이..

코딩 스탠다드 1 : if 문의 조건식이 길다면 함수로 빼버린다.

제목 그대로 if 문의 조건이 길다면 함수로 빼는 것이 제 첫번째 코딩 스탠다드입니다.  상황) 만약 장바구니에 있는 상품 중에서 사이즈가 M인 상품을 2개 구매하려고 할 때 재고가 1개밖에 남지 않았다면 이를 막아야합니다.  우리는 다음과 같은 흐름을 따라갈 것입니다.  데이터베이스에서 나의 장바구니를 가져온다.장바구니 안에 상품의 사이즈가 M인지 체크한다.내가 고른 장바구니의 수량과 데이터베이스에 남아있는 수량을 비교한다. 만약 재고가 더 많이 남아있으면 결제를 진행한다. Bucket myBucket = bucketRepository.findByLoginId(loginId);String itemName = myBucket.getItem().getName()Item myItem = itemReposit..

코딩 스탠다드 카테고리 시작!

요즘 클린코드에 빠져있습니다. 때문에, 오래된 (약 2년전) 코드인 사이드 프로젝트의 코드들도 대대적으로 보기 깔끔한 코드로 변경하고 있습니다.  그러면서 문득 떠오르게 된 나만의 코딩 방식 "코딩 스탠다드" 를 정리하려고 합니다. 저는 제 포스팅을 남들이 많이많이 보는 것을 원하지 않습니다. "기억보다 기록을" 의 향로님처럼 많은 사람들이 보면 좋겠지만 저는 최대한 검색엔진에 노출되지 않게 포스팅을 작성하였습니다.  그 이유는 제가 눈에 띄는 것을 별로 안좋아하기도 하고 나중에 내사람들한테만 보여주면서 지식을 공유하는 것을 좋아합니다.  누군가는 농약을 헬기로 뿌려야할만큼 광활한 옥수수 농장을 운영하기도 하지만 조용히 시골에서 텃밭을 가꾸는 사람도 있으니까요. 저는 텃밭을 가꾸는 쪽입니다.  이 카테고..