목록전체 글 (531)
개발놀이터
이번 포스팅에선 AWS에서 HTTPS 적용하는 방법에 대해서 포스팅해보도록 하겠습니다. 조금 복잡할 수 있으니 순서대로 차근차근 알려드리겠습니다. 시작하죠! HTTPS 적용하기 1. 도메인 구매하기 우선 도메인을 구매해야합니다. 저는 cafe24에서 구매했습니다. 우선 구매하고 잠심 대기해주세요. 도메인의 네임서버를 바꿔줘야하는데 지금은 바꾸지 않습니다. 2. Route 53 도메인 등록 유형 NS를 클릭하면 레코드 세부 정보가 나오는데 값에 해당하는 저 네개를 cafe24 관리자 페이지에 들어가 네임서버를 변경해주면 됩니다. 연결하는 방법은 아래의 링크에 자세히 나와있습니다. https://jsikim1.tistory.com/153 AWS에 Cafe24 도메인 연결하는 방법 - Route 53, EC2..
0. Introduce 배포를 진행할 때 고려해야 하는 점을 공부하다 Warm Up 이라는 개념에 대해서 알게 되었습니다. 그리고 클래스 로더, JIT 컴파일러를 Warm Up 하는 방법에 대해서 학습하고 실습했습니다. 1. 기존 프로젝트의 배포 배포를 진행하고 클래스 로더의 지연로딩, JIT 컴파일러의 활성화 조건을 만족하지 않았습니다. 2. 기존 프로젝트의 문제 배포를 하고 난 조금 뒤에는 지연 시간이 안정되지만 배포를 한 직후에는 지연 시간이 많이 발생할 수 있는 문제점을 파악했습니다. 3. ver.3 에서 해결한 점 ApplicationRunner를 구현함으로써 클래스 로더의 지연 로딩을 해결했습니다. Jenkins의 CI 파이프 라인에서 curl 명령어를 통해 많은 요청이 예상되는 API를 wa..
0. Introduce 블루 그린 배포까지 성공적으로 완료했고 Jenkins라는 CI 자동화 툴로 자동화까지 성공했습니다만 실전에서는 어떻게 배포를 하는지에 대해서 궁금해졌습니다. 때문에 Graceful Shutdown을 도입하게 되었습니다. 1. 기존 배포 블루 그린 배포에서 이전 버전이 내려가고 새로운 버전이 올라간다. 2. 기존 배포의 문제점 블루 => 그린으로 배포하는 과정에서 이전 버전을 갑자기 닫아버리면 이전 버전을 이용하고 있던 사용자의 시스템이 멈춰버립니다. 이 때 결제를 진행하고 있다거나 데이터베이스를 이용하는 로직 도중 서버가 내려가버리면 트랜잭션이 에러에의해 롤백되는 것이 아니기 때문에 도중에 로직이 멈춰버릴 가능성이 있습니다. 이는 부정적인 사용자 경험으로 이어질 뿐더러 롤백을 제대..
이번 포스팅에선 warm up에 대해서 알아보도록 하겠습니다. 자바에선 JVM의 존재 때문에 항상 느린 언어 취급을 받아야 했습니다 (실제로도 느린건 사실입니다). 하지만 그런 느린 언어라는 누명을 벗기위해 다양한 노력을 시도했습니다. 언어적으로 노력한 부분도 있고 자바를 사용하는 개발자들의 꼼수(?)로 자바는 생각보다 컴파일언어 (C, C++, Rust) 와 견줄만한 속도를 가지게 되었습니다. 우리는 이번 포스팅에선 warm up 이라는 개념이 왜 등장했는지 클래스 로더와 JIT 컴파일러의 관점에서 알아보고, warm up을 어떻게 진행하는지 방법에 대해서 알아보도록 하겠습니다. 클래스 로더 자바에서는 클래스를 읽어오기 위해 클래스 로더를 이용합니다. 클래스 로더는 클래스 파일을 찾고, 메모리에 로드해..
여러분들이 배포를 진행하는데 어떤 배포 방법을 사용하는지에 따라 다르겠지만 기존 배포했던 서버를 내려야 하는 상황이 생길 것입니다. 만약 블루그린 배포를 진행했다고 가정하면 새로 올릴 서버를 띄운 다음 기존 서버를 죽여야하는 상황이 생기겠죠? 그 때 그냥 서버를 죽여버리면 사용자는 굉장히 난처한 상황에 놓일 것입니다. 혹시라도 그 사용자가 결제를 진행하고 있다가 서버가 내려가서 결제가 취소된다면 부정적인 사용자 경험으로 이어질 수 있습니다. 하지만 그런 상황이라면 조금 기분 나쁘고 말겠지만 결제가 진행되고 있는 도중 (API에 요청을 보내서 처리하고 있던 도중) 서버가 내려가버리면 이건 예외상황에 의해 트랜잭션이 롤백되는 것이 아니기 때문에 개발자 입장에서도 처리하기 난처한 상황입니다. 그렇기 때문에 G..
이번 포스팅에선 윈도우에서 도커를 사용하는 방법에 대해서 포스팅해보도록 하겠습니다. 흔히 알려지기로는 도커는 리눅스 환경에서만 동작하기 때문에 신입 기준 러닝커브가 있는 편이라고 하죠. 어? 그럼 윈도우에선 어떻게 동작하지? 바로 WSL 이라는 기술을 이용하면 됩니다. WSL은 Windows Subsystem for Linux 2 의 약자로 쉽게 말해서 윈도우에서 리눅스를 사용할 수 있게 해주는 기술입니다. 이제 WSL을 이용해서 윈도우에서 도커를 사용해봅시다. 윈도우에서 도커 설치 우선 WSL2를 다운받아야합니다. 그러기 위해선 윈도우 터미널인 power shell이라는 것을 다운받아야 하는데요. 파워 쉘은 다운받기 정말 간단합니다. 마이크로소프트 스토어에서 다운받으면 됩니다. 파워 쉘 다운 저는 이미..
이번 포스팅에는 프록시 패턴과 데코레이터 패턴에 대해서 알아보겠습니다. 뜬금없이 왜 프록시 패턴과 데코레이터 패턴을 공부했냐면 제가 AOP를 공부했기 때문입니다. 스프링 AOP에서 사용하는 GOF 디자인 패턴 중 데코레이터 패턴이 사용되었기 때문에 공부차 한번 구현해봤습니다. 한번 시작해보죠! 프록시 이 두 패턴을 알아보기 전에 프록시에 대해서 알아봐야 합니다. 보통 프록시는 '대리자' 라고 번역이 되고 내가 수행해야 할 일을 대신 수행해주는 존재 라고 생각하시면 됩니다. 이렇게 대신 내 일을 대신 수행해주면 무슨 이점이 있을까요? 프록시를 이용하면 얻을 수 있는 것은 두 가지 입니다. 접근 제어 (캐싱) 부가 기능 (로깅, 트랜잭션) 접근 제어 예를 들어 클라이언트가 서버에 A라는 데이터를 조회했다고 ..
이번 포스팅에선 트랜잭션 전파에 대해서 알아보도록 하겠습니다. 사실 트랜잭션 전파에 대해서는 어느정도 알고 있는 부분이 있었는데 제가 아는 수준은 "트랜잭션 전파를 이용하면 데이터 정합성을 유지할 수 있고 그 단계에는 일곱가지 (REQUIRED 외 6개) 가 있다." 그리고 각각의 전파 단계에 대해서 학습을 했는데요. 그러다 오랜만에 인프런에 들어갔는데 사놓고 안들은 강의가 있었습니다. 김영한님의 DB 접근기술 2탄이었습니다. 이걸 왜 안봤지? 싶어서 봤는데 정말 흥미로운 내용이 있었습니다. 왜 트랜잭션을 전파할 수 밖에 없었는지, 전파 도중 롤백이 일어나면 어떻게 처리하게 되는지에 대한 내용을 상세하게 알려주셨습니다. (역시 영한님!) 이번 포스팅에선 그 내용에 대해서 제 언어로 정리하기 위해 적는 포..
이번 포스팅에선 JPA에서 엔티티의 생명주기에 대해서 알아보도록 하겠습니다. 스프링의 빈 생명주기를 공부해 보신 분들이라면 JPA의 엔티티 생명주기라는 말을 들으실 때 대충 감이 잡히실겁니다. 엔티티의 생명주기란 엔티티를 사용할 수 있는 다양한 상태라는 것을 말이죠. 스프링 빈 생명주기에 객체 생성, 의존 설정, 초기화, 사용, 소멸의 생명 주기를 가지고 있다면 JPA의 엔티티는 Trasient (비영속), Managed (영속), Detached (준영속), Removed (삭제) 상태가 있습니다. 한번 자세히 알아보죠. JPA 엔티티 생명주기 New / Transient (비영속) 엔티티 객체가 생성된 상태를 말합니다. 이 상태를 New 혹은 Transient 상태라고 합니다. 이 상태는 객체가 아직..
이번 포스팅에선 JPA의 복합 기본 키에 대해서 알아보겠습니다. 사실 이 내용을 공부하면서 이게 대체 왜 필요하지..? 싶은 내용이었습니다. 도저히 실제 애플리케이션에서 사용할 것 같지 않은 개념이라 조금 당황했지만 이것도 엄연히 JPA의 스펙 중 하나이기 때문에 놓치고 싶지 않았습니다. 한번 어떤 내용인지 알아보죠! JPA 복합 기본 키 우선 복합 기본 키라는게 어떤 것인지부터 알아야겠습니다. 복합 기본 키 혹은 복합 키로 잘 알려진 영어로 Composite Primary Key는 컬럼들이 한 행이 보장되는 유니크함을 결합될 때 테이블 안에서 각각의 행들이 유니크하게 식별되는 두개 이상의 키입니다. 이건 왜 사용할까요? 우리가 JPA를 사용할 때를 생각해볼 필요가 있습니다. 만약 이름이 홍길동인 사람을..