본문 바로가기

개발

(6)
워드프레스 + AWS = 무료로 홈페이지 만들기 유명한 CMS : Content Management System인 워드프레스와 아마존의 클라우드 컴퓨팅 서비스인 AWS를 이용해서 무료로 나만의 홈페이지를 만드는 방법을 정리하고자 합니다. 워드프레스 (Wordpress) 네이버나 티스토리 블로그를 이용해서도 멋진 블로그를 만들 수 있지만 이러한 블로그들은 나만의 주소를 가질 수 없다는 것과, 말 그대로 블로그라서 내가 원하는 기능을 마음대로 추가하기가 힘듭니다. 단순히 글만 쓸 수 있죠. 하지만 예를들어 블로그가 아닌 쇼핑몰을 만들고 싶다면? 나만의 이쁜 홈페이지를 만들고 싶다면? ​ 워드프레스를 사용하면 어떤 것이든지 쉽게 만들 수 있어요. 써놓고 다시보니까 광고 글 같네요. 그런데 사실, 물론 블로그에 단순히 글을 쓰는 것 보다는 배워야 할 것이 많..
MSA (Microservice Architecture) 마이크로서비스 아키텍처 회고 MSA를 적용하면서 느낀점과 MSA에 대한 생각을 정리하고자 합니다. ​ MSA(Microservice Architecture) 마이크로 서비스 아키텍처란? 간단히 말하면, 큰 어플리케이션을 작게 나누는 것이 전부입니다. 큰 것을 작게 나눠서 장점도 있지만 단점도 존재해요. 하지만 단점을 커버할 만큼 어플리케이션이 크다면 MSA를 적용하는 것이 좋습니다. 장단점을 간단하게 이야기하듯이 써내려가며 생각을 정리하고자 해요. ​ Monolithic Architecture 단일 아키텍처 대부분 모놀리틱 아키텍처라고 번역을 하는 것 같은데, 모놀리틱, 모놀리틱 하니까 뭔가 이상해서 단일 아키텍처라고 이름을 지었습니다. 단일 아키텍처를 예를들어 살펴봅니다. 아래와 같이 Coupang이라는 하나의 팀이 있습니다. 그..
[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와 ..