분류 전체보기

    [React] Redux vs Recoil

    모든 코드는 Github에 저장되어 있습니다. 나는 리액트로 개발을 할때 redux밖에 사용하지 않았었다. Redux는 검증되어있는 느낌이었고 커뮤니티 풀도 Redux가 우세했기 때문에 처음에 Redux를 공부하여 Redux만 사용했다. 최근 React-query를 사용하여 서버데이터와 클라이언트 내부데이터의 상태관리를 나누는 방법으로 개발을 하고 있다. 그래서 내부 상태저장을 할때 상대적으로 코드가 적은 recoil에 관심을 가지게 되었고 redux와 recoil의 차이점을 알아보려고 한다. 1. Redux 기존 양방향 데이터 흐름 Meta(전 Facebook)는 상태관리 문제를 해결하기 위해 Flux 패턴을 만들어 양방향 데이터 흐름에서 벗어나 단방향으로만 데이터를 변경할 수 있도록 만들었다. Red..

    [Devops] spring boot 블루/그린 무중단 배포 (gitlab ci, docker, nginx)

    spring boot로 무중단 배포를 이용하려고 한다. spring boot도 code deploy, elastic beanstalk 등등 무중단 배포 방법은 많다. 그중에서도 블루/그린 방법으로 docker를 이용하고 nginx도 공부할겸 nginx로 배포하려고 한다. 먼저 배포 과정은 아래와 같다. (1) gitlab에 push (2) 8080에 실행되고 있는 spring boot 멈춘 후 업데이트 (3) 8080 업데이트 후 실행 (4) 8081 멈춘후 업데이트 이러한 배포 방식을 블루/그린 이라고 하며 블루 컨테이너를 주로 보여주고 업데이트시에만 그린 컨테이너를 이용하는 방법이다. 그렇게 하여 기존 제공되는 서비스는 멈추지 않고 변경사항을 적용할 수 있다. 나는 업데이트 적용 후 green을 멈추..

    [Devops] react 무중단 배포 (gitlab ci, s3, cloudfront)

    react 프로젝트를 gitlab ci 를 이용하여 s3에 저장 후 cloudfront에 배포한 경험을 정리한다. 깃허브액션, 도커를 이용하여 자동배포는 설정해본적이 있지만 서비스가 중단되지 않는 무중단 배포는 아니었다. 이번엔 서비스가 중단되지 않는 무중단 배포를 설정해보려고 한다. react를 무중단 배포 하는 방법은 여러가지가 있다. Cloudfront로 ec2를 따로 관리 안해줘도 된다는 점과 protect 정책, cdn 등 많은 걸 지원해줘서 cloudfront로 결정했다. 배포 과정은 다음과 같다. 1. gitlab github와는 다르게 gitlab은 runner를 따로 설치해서 사용해야 한다. 그래서 먼저 gitlab runner를 등록해야 한다. 처음 이부분을 모르고 계속 실패했다가 나중..

    [AWS] AMI로 EC2 인스턴스 공장 만들기

    최근 오토스케일링 그룹을 만드는 과정에서 애를 좀 많이 먹었다. 처음에 EC2인스턴스를 오토스케일링 그룹으로 만들어주면 알아서 되겠지~ 했다가 많은 삽질을 했다. 그래서 그 삽질한 부분을 정리하려고 한다. 오토스케일링 그룹이란 유동적으로 인스턴스의 수를 관리하는 것이다. 예를 들면 하나의 EC2 인스턴스로 홈페이지를 만들었다고 하자. 평소엔 잘 돌아가다가 갑자기 이벤트를 진행하여 사용자들이 몰렸다. 그래서 서버가 터졌다. 흔히 수강신청, 티켓팅 등 유저들이 몰리면서 서버가 터지는 경우가 있다. 만약 어느정도 유저들이 몰리면 새로운 EC2 인스턴스를 자동으로 생성하고 이벤트가 끝나면 생성했던 EC2를 종료한다면 가격적으로 금상첨화일것이다. 예는 들었지만 내 생각은 수강신청, 티켓팅은 단시간에 몰리는 경우는..

    [Spring Boot] 오버로딩 언제 할 수 있을까

    오버로딩이란 메소드 이름은 같지만 다른 역할을 하는 메소드들을 만드는 것이다. 흔히들 오버라이딩과 오버로딩을 비교하곤 하지만 다른 개념이라 생각하여 따로 정리했다. 나는 개인적으로 오버로딩이란 개념을 좋아한다. 왜냐하면 같은 메소드 이름으로 여러 기능을 하는 메소드를 만들수 있기때문에 메소드 이름 작명의 수고를 덜어준다. 이름을 짓는 건 언제나 창작의 고통이기 때문에 오버로딩을 좋아하게 되었다. 그래서 오버로딩 어디까지 할 수 있는지 알아보기 위해 글을 쓴다. 1. 매개변수가 다를때 가장 보편적인 경우이다. 매개변수가 다를때 오버로딩이 가능하다. (1) 매개변수 갯수가 다를때 public void Method1() {} public void Method1(int a) {} (2) 매개변수 타입이 타를때 ..

    [Java] 필드 주입시 생성자에 this 꼭 써야할까?

    나는 아래와 같이 class 에서 생성자 코드를 작성시 항상 생각없이 this를 썼다. class Board { String name; String content; public Board(String name, String content) { this.name = name; this.content = content; } } 한번도 this를 꼭 써야하나라는 고민은 하지 않았기 때문이다. 대부분 클래스의 생성자로 필드 주입시 위와 같이 this를 사용한다. 왜냐하면 필드의 변수명과 생성자로 주입받는 파라미터의 변수명이 같기 때문이다. class Board { String name; String content; public Board(String name, String content) { name = nam..