본문 바로가기

워드프레스 + AWS = 무료로 홈페이지 만들기 유명한 CMS : Content Management System인 워드프레스와 아마존의 클라우드 컴퓨팅 서비스인 AWS를 이용해서 무료로 나만의 홈페이지를 만드는 방법을 정리하고자 합니다. 워드프레스 (Wordpress) 네이버나 티스토리 블로그를 이용해서도 멋진 블로그를 만들 수 있지만 이러한 블로그들은 나만의 주소를 가질 수 없다는 것과, 말 그대로 블로그라서 내가 원하는 기능을 마음대로 추가하기가 힘듭니다. 단순히 글만 쓸 수 있죠. 하지만 예를들어 블로그가 아닌 쇼핑몰을 만들고 싶다면? 나만의 이쁜 홈페이지를 만들고 싶다면? ​ 워드프레스를 사용하면 어떤 것이든지 쉽게 만들 수 있어요. 써놓고 다시보니까 광고 글 같네요. 그런데 사실, 물론 블로그에 단순히 글을 쓰는 것 보다는 배워야 할 것이 많..
MSA (Microservice Architecture) 마이크로서비스 아키텍처 회고 MSA를 적용하면서 느낀점과 MSA에 대한 생각을 정리하고자 합니다. ​ MSA(Microservice Architecture) 마이크로 서비스 아키텍처란? 간단히 말하면, 큰 어플리케이션을 작게 나누는 것이 전부입니다. 큰 것을 작게 나눠서 장점도 있지만 단점도 존재해요. 하지만 단점을 커버할 만큼 어플리케이션이 크다면 MSA를 적용하는 것이 좋습니다. 장단점을 간단하게 이야기하듯이 써내려가며 생각을 정리하고자 해요. ​ Monolithic Architecture 단일 아키텍처 대부분 모놀리틱 아키텍처라고 번역을 하는 것 같은데, 모놀리틱, 모놀리틱 하니까 뭔가 이상해서 단일 아키텍처라고 이름을 지었습니다. 단일 아키텍처를 예를들어 살펴봅니다. 아래와 같이 Coupang이라는 하나의 팀이 있습니다. 그..
선물옵션 이해하기 선물 (먼저 선, 물건 물), Futures 어떤 마을에서는 배추 값이 큰 폭으로 오르락 내리락 한다고 해요. 그리고 그 마을에 배추농사를 하는 농부가 있어요. 농부는 올 가을 배추값이 한 포기에 100원도 안 될 것 같은 불길한 예감이 들어요. 그리고 마을에 김치가게를 하는 아저씨가 있어요. 아저씨는 올 가을 배추값이 한 포기에 10,000원은 될 것 같아 불안해요. 그래서 농부는 김치가게 아저씨를 찾아가 올 가을에 배추 한 포기당 1,000원에 100포기를 사고 팔기로 미리 계약을 해요. 김치가게 아저씨도 나쁘지 않아서 계약을 하기로 합니다. ​ 만약 올 가을 배추값이 10,000원이 된다면 농부는 손해를 봐요. 하지만 배추값의 폭락을 걱정하지 않아도 됩니다. 반대로 배추 값이 100원이 된다면, 김..
옵션만기일과18일 트럼프 자동차 관세 25% 옵션만기일 지난 5월 9일이 옵션 만기일이였어요. 옵션이란 주식에서 파생된 상품으로, 도박과 비슷합니다. 옵션과 비슷한 개념으로 선물이 있어요. 매월 둘째 주 목요일이 옵션 만기일이고, 선물은 세 달 마다 만기일이 돌아옵니다. 옵션과 선물의 만기일이 겹치는 3월,6월,9월,12월은 특히 주가변동이 심합니다. ​옵션과 선물이 어떻게 주가를 변동시킬 수 있는걸까요? 선물과 옵션이란? 옵션이란 간단하게 말해서, 1개월 동안의 주가지수의 방향을 돈을 걸고 예측하는 거에요. 스포츠 토토에서 "2:3으로 토트넘이 이긴다에 만원을 건다!" 와 비슷해요. "한 달 뒤, 주가지수가 2% 내린다에 만원을 건다!" 라고 하는 거죠. 때문에 주가지수가 내린다! 에 건 사람이 많을 수록 주가를 내리려고 안감힘을 쓰겠죠! 선물도..
[MySQL] 테이블에서 중복을 피하는 방법 Background먼저 왜 이러한 고민을 하게 되었는지 배경을 정리하고자 합니다. 이번에 사용한 Database는 MySQL이고, 엔진은 InnoDB 입니다. ( * MySLQ 사용 엔진은 SELECT engine FROM information_schema.TABLES where table_name=’your_table_name’ 으로 확인할 수 있습니다) 데이터를 insert 할 때, 두 필드를 조건으로 유니크함을 보장해야 했습니다. 단순히 두 필드를 복합키를 걸어서 유니크 키로 사용하면 해결될 문제입니다. 하지만 복합키를 사용할 수 없는 상황이었습니다. ** Composite Key 를 허용하지 않음저희 회사에서는 테이블에 Composite Key 복합키를 허용하지 않습니다. 또한 모든 테이블은 Au..
[JPA Lazy Evaluation] LazyInitializationException: could not initialize proxy – no Session Basic InformationLazyInitializationException: could not initialize proxy - no SessionJPA 관련해서 작업을 하다보면 위와 같은 에러메시지를 만나곤 합니다. 무슨 의미일까? JPA Session여기서 Session 은 JPA 영속성 컨텍스트가 유지되는 하나의 세션을 의미합니다. 즉, 트랜잭션 시작 ~ 트랜잭션 끝 까지를 의미합니다. 언제 이런 예외가 발생할까?? 회원가입을 예로들면, 회원가입을 구현하기 위해 1. 중복체크 2. 데이터 저장 순서로 보통 구현합니다. 아래 예에서는 중복체크를 위해 getOne을 이용해서 Lazy 엔티티를 가져왔습니다. (getOne에 대해서는 아래 부분에서 설명합니다.)그리고 엔티티에 필요한 작업을 하고 저장..
SQS with Spring Background이전 아티클에서 RabbitMQ 를 Kafka 로 마이그레이션하다가 비즈니스 성격상 맞지 않아 중단했습니다. 그래서 새로운 대체 메시징 시스템이 필요했습니다. 결과적으로 SQS를 사용하게됬는데, 그 경험을 정리하고자 합니다. Why SQS?먼저, 왜 여러 MQ 구현체 중에 SQS 를 선택했을까?>> SaaS(Software as a Service)기존에 사용하던 솔루션은 SaaS가 아니였습니다. 기존에는 RabbitMQ 클러스터를 구성하고 유지하는 비용을 모두 감당해야했습니다. RabbitMQ에 요청이 늘고, 줄을 때마다 클러스터를 구성하는 인스턴스 늘려주는 작업도 필요하고, 인스턴스 관리도 필요합니다. 하지만 SQS는 AWS에서 SaaS로 제공되어, 유지보수는 AWS가 알아서 해줍니다..
Kafka Consumer Design Background대부분이 메시징 시스템이 그렇듯이, 프로듀서는 비교적 쉽습니다. 그냥 메시지를 발행하면 됩니다. 하지만 컨슈머의 경우 비즈니스의 요구사항에 따라 고려할 점이 많아집니다.Fail over를 처리해야되는지 또는 메시지를 중복 소모를 해도 되는지 또는 병렬처리가 필요한지 또는 비동기처리를 해야되는지 등.. 제가 이번에 경험한 상황은 기존에 RabbitMQ로 50개의 병렬 메시지를 동시에 처리하던 작업을 Kafka 로 마이그레이션 하는 작업입니다. 각 메시지는 처리시간이 초 단위에서 길게는 30분 까지 다양합니다. 그리고 메시지는 최대 50개를 병렬 처리해야하며, 각각의 메시지는 끝나면 큐에서 다음 메시지를 가져와서 처리해야합니다. Smart pipe and Dump pipeRabbitMQ와 ..