분류 전체보기 (45) 썸네일형 리스트형 일체형 아키텍처(monolithic architecture) 분리하기(Hystrix 도입기) - 2 일체형 아키텍처 분리하기(Hystrix 도입기) - 2 Circuit breaker(Hystrix) 도입기 개인 프로젝트를 MSA로 변환하면서 의존성을 가지는 컴포넌트에 대해서 Hystrix라는 라이브러리로 Circuit breaker patten을 적용했다. 그런데 필자가 이 패턴에 대해서 이해가 낮아서 시행착오를 겪었다. 그 과정을 이 글에서 소개해보고자 한다. Hystrix와의 잘못된 만남 처음 histrix를 유저 로그 기록하는 서버에 도입했다. 유저가 특정 컨텐츠를 검색하면 accessToken과 검색 조건을 유저 로그 서버가 받아서 accessToken은 인증 서버로 보내서 인증 후 User Id를 응답받는 부분이 있었기 때문이다. Hystrix의 존재를 알고 있고 Spring에 도입하는 설정.. 두번 째 회사에 들어가며 두번 째 회사에 들어가며 0. 내가 백수가 된 이유 작년 8월 갑작스럽게 백수가 됐다. 다니던 회사의 투자금이 다 떨어져간다는 것은 느끼고 있었다. 대표님이 IR을 자주 다녔고 꽤 큰 금액을 다른 업체에 제휴를 위해서 투자 했었기 때문이다. 그래도 2018년까지는 버틸 수 있을 것이라고 느꼈다. 그러나 그 날은 갑자기 왔다. 여느때와 같은 월요일이라서 모든 멤버들이 한주의 일정을 공유하는 시간이라고 생각했다. 그러나 대표님은 이제 사업은 지속할 수 없게 되었고 내가 부족해서 이렇게 되서 미안하다고 말씀하셨던 것같다. 순간 멍해졌다. 핫플레이스 검색이라는 기능을 새로 개발하는 과정에서 이제 나도 주도적으로 개발을 할 수 있겠다는 자신감이 생긴 시점이었다. 그리고 우리 팀과 서비스를 너무 좋아했었기 때문이다.. 일체형 아키텍처(monolithic architecture) 분리하기 - 1 일체형 아키텍처(monolithic architecture) 분리하기 - 1 세 가지 형태의 서버 구조 개인프로젝트에서 사용자 로그를 저장하고 조회하는 기능을 기존의 리소스 서버에서 분리했다. 수정 이전의 리소스 서버는 아동 컨텐츠 검색 기능과 사용자의 컨텐츠 조회 사항을 기록하고 메인페이지에 최근에 조회한 컨텐츠를 제공하는 역할을 함께 해주었다. 이번에 사용자의 검색 조건을 사용자 로그로 저장을 하는 기능을 추가하면서 리소스 서버에서 유저 로그와 관련된기능을 분리했다. 이번 글에서는 세가지 서버의 구조를 볼 것이다. 관계형 데이터베이스에서 모든 기능을 처리하는 일체형 아키텍처 사용자 로그용 저장소를 추가한 일체형 아키텍처 사용자 로그만을 다루는 마이크로서비스 아키텍처 점점 개선되는 구조를 보면서 마이크.. [spring cloud] hystrix 도입하면서 alpine linux에서 jvm error 발생 저번에 t아카데미에서 MSA에 관한 세미나에 참석하고 이번에 클라우드 네이티브 자바라는 책을 접하면서(완독은 못하고 일부 읽었다.)퍼블릭 클라우드 서비스를 사용하고 컨테이너 기술을 사용하고 있다면 내가 공부한 내용을 실천해야겠다고 생각했다. OOP의 단일책임원칙처럼 애플리케이션이 가급적 하나의 목적(하나의 도메인이라고 표현해야할지도 모르겠다...)을 가지고 기능하도록 서비스 컴포넌트로 분리하고자 했다. 스토리지를 서비스 컴포넌트마다 하나씩 두고 각 서비스 컴포넌트가 단일 인터페이스로 통신하는 형식으로 바꿔야 겠다는 생각을 했다.사용자 로그를 현재 하나의 컨텐츠를 조회할 때만 기록하는데 사용자가 검색할 때 무엇을 검색했는지 기록에 남기는 요구사항이 있었다. Firestore를 저장소로 사용하고 로직을 작성.. [ssl] aws에 docker와 letsencrypt(certbot) 이용해서 ssl 인증 적용하기 1. ssl를 적용할 수 밖에 없던 과정 수개월째 백수로 지내면서 개인프로젝트를 하고 있다. 개인프로젝트에 ssl을 도입할 수 밖에 없는 이유가 두가지 있었다. 첫째, JWT 기반의 로그인을 하고 있다. JWT는 stateless라는 장점이 있어서 애플리케이션을 확장할 떄 좋지만 보안에 있어서 취약하다. 왜냐하면 사용자 정보가 일부분 들어갈 수도 있고 단순히 해쉬 알고리즘만 안다면 정보를 알 수 있기 때문이다. 그래서 ssl 인증은 필수다. 두번째, 페이스북 로그인 때문이다. 페이스북 로그인을 도입했는데 개발단계에서 localhost를 사용하는 것은 허용되지만 사용에서 https를 사용하지 않는 도메인은 허용하지 않는다. 2. 사전 조사 ssl은 전 회사에서 aws에서 제공해주는 ssl을 이용해서 도입했.. [실수 박제] aws lightsail 도메인 서버 설정 멍청하게 해서 하루 날리다. https 설정 관련해서 lightsail에서 로드 밸런서를 띄우는 과정에서 도메인 네임 서버를 도메인 업체에서 제공하는 dns에서 lightsail에서 제공하는 dns 영역으로 이관하는 과정에서 발생한 삽질이다.너무 하찮고 사소한 실수라서 발견하기 너무 힘들었다. 원인 아래 그림에서 A 레코드 @.withkid.tk 라고 되어있는 부분을 설정하지 않아서 생긴 문제이다.처음에 @를 붙이면 withkid.tk로 연결되는 걸 모르고 www.withkid.tk로 설정했던 게 문제였다. 그리고 클라이언트에서 axios에 baseurl 설정하기 위해서 만든 전역 변수에는 www.withkid.tk가 아니라 그냥 withkid.tk로 되어 있었다.. // productionconst AUTH_BASE_URL = ".. [Solidity] 스마트 컨트랙트에서 재진입 공격과 address.call()과 address.transfer()의 차이 Reentrancy Attack을 공부하면서 의문이 생겼다.fallback function은 ether가 Contract에 송금되면 정말 무조건 실행되는 것인지.. 실제로 코드를 짜서 재진입 상황을 재현해보려고 했는데.gas 비용이 부족하다고 재진입이 안되는 것이었다....안심스러우면서도 대략난감한 상황.... Reentracy Attack이란? 재귀적인 방법을 사용해서 Contract에서 보유한 모든 이더를 출금하는 방법이다. 해커가 계약을 작성해서 다른 계약으로부터 송금받는 코드를 작성한다.그리고 해커가 정의한 fallback function에서 다시 해커가 작성한 계약에 이더를 송금하는 function(앞서 호출한 함수와 동일한 함수)을 호출하는 방법으로 퍼브릭 블록체인의 경우 Contract의 코.. 2018년 회고 웹개발 2년차.. 대학교를 다닐 때는 별로 장래에 대한 생각이 없었다.학교 등록금이 저렴하고 지방이라 물가가 저렴해서 마냥 편하게 지낸거같다.물론 장래에 대해서 막막하고 고민할 때도 있었지만..대학 4년 동안은 마음껏 방황하고 내가 뭘 하고싶어 하는지 찾아보고 직접 경험해보는 것에 만족했던 것 같다. 학교에서 여러가지를 경험해봤었는데. 그 중 프로그래밍이 흥미있고 재미있었던 기억이 있어서 2017년 2월 졸업 하기 전에 국비 지원 학원에 등록했다.수업을 듣다가 어느 순간 진도가 너무 느려서 내가 알아서 공부하다 보니 채용박람회를 찾아가게 되었고 그렇게 서울에 상경하게 되었다.운이 좋아 팔자에도 없던 강남에서의 인턴생활을 시작했다. 인생 첫 직장 생활 인턴으로 시작한 첫 직장에의 10개월은 정말 뜻 깊은 .. 이전 1 2 3 4 5 6 다음