반응형 Semina9 [최범균 Youtube] 마이크로서비스 5개 배포 원칙 소개 최근에 MSA에 대해서 관심이 생기면서 관련된 영상을 찾아보던 중 최범균님이 올리신 마빌딩 마이크로서비스 아키텍처 시리즈 영상에 대해 알게 되었습니다. 아래 영상을 먼저 보고 제 글을 읽어보시길 추천드립니다. 실행 격리 Isolated execution 부하/배포에 있어서 마이크로서비스 간에는 영향을 줘선 안된다. 만약 한 호스트(노드 혹은 서버)에서 여러 마이크로서비스 인스턴스를 실행할 경우 한 마이크로서비스의 부하가 급격히 증가 했을 때 다른 마이크로서비스의 성능이 저하될 수 있으며, 한 마이크로서비스의 배포를 위한 설정이 변경되면 다른 마이크로서비스의 배포에도 영향을 줄 수 있기 때문이다. 그러므로 격리된 환경에서 마이크로서비스를 실행해야 하며, 가상화 기술, 컨테이너, FaaS 등의 기술을 활용하.. 2022. 4. 10. [최범균 Youtube] 완전 주관적인 실용주의 프로그래머 팁 10선 최범균님의 영상을 보고 저의 생각과 부연적인 의견을 더해 작성한 글입니다. 원본 영상을 보신 후에 읽어 보시길 추천드립니다. 팁1. 자신의 기예(craft)에 관심을 가져라 여기서 기예란 ‘컴퓨터에게 우리가 시키고 싶은 일을 하게 끔 만드는 것’을 의미한다. 좀더 자세하게 자신이 어떤 기예를 가지고 있고, 어떤 부분에 능숙하고 부족한지를 알아야 한다. 그래야만 실제 직면한 문제들에 대해 해결할 수 있고, 기예를 단련하기 위해 어떤 방향으로 나아가야 할지도 잡히기 때문이다. 이는 실용주의 프로그래머가 갖는 여러 특징 중 공통적이면서 기본적인 특징이다. 그 외에도 여러 특징이 있다. 새로운 것에 빨리 적응하는 것 새로운 기술이 나오거나, 새로운 환경이 등장 했을 때 이를 적극적으로 학습하고 적응하는 특징을 .. 2022. 4. 10. [우아한Tech - 우아한테코톡] Event Loop 이벤트 루프는 Nginx, NodeJS, Netty, V8 Engine 등 많은 곳에서 쓰고 있는 메커니즘이다. 그 개념에 대해서 명확히 알지 못했던 차에 테코톡에서 좋은 영상을 찾아서 보고 간단히 정리해보려 한다. function process() { console.log("start"); setTimeout(()=>{ console.log("jordy"); }, 0); console.log("end"); } process(); 위 영상을 정확히 이해했는지 여부는 위 소스코드가 실행 됐을 때, 콘솔에 찍히는 순서를 맞출 수 있는지 여부로 확인할 수 있다. 결론적으로 start - end - jordy 의 순서로 출력된다. 왜 그런 것일까? 우선 브라우저의 구조를 이해한다면 더 이해가 쉽다. 다음 사진과.. 2022. 3. 28. [우아콘2020] 배달의민족 MSA 여행기 [우아콘2020] 배달의민족 MSA 여행기 우아콘2020 때 김영한 님이 발표한 배달의민족 마이크로서비스 여행기를 보고 정리해보았다. 방문자 분들은 나의 블로그 글보단 영상을 보고 직접 정리해보는게 더 좋을것 같긴 한다. 최초에는.. MSSQL DB와 PHP, 프로시저가 범벅이된 서비스. 온프리미스로 구성되어 있어서 일부 서비스에 장애가 나도 다른 곳에도 그것이 전파가 된다. 자바 언어는 유스케이스가 많고 고스펙의 개발자를 수급하기가 쉬움. 2016년, 치킨 디도스 AWS이관이 불가한 결제를 제외하고는 치킨 이벤트에 필요한 프론트 서버와 주문 서버를 AWS로 옮기고 스케일링을 통해 많은 부하를 대응. 그림에 나오는 외부 PG는 타기업의 결제 서비스로 배달의 민족에서 부하를 모두 받아내고 이 요청을 다시 .. 2022. 3. 28. [최범균 Youtube] 마이크로서비스 6개 핵심 개념 마이크로서비스 6개 핵심 개념 독립적 배포 크기 비즈니스 도메인을 중심으로 모델링 유연함 자신의 상태를 가짐 아키텍처와 조직을 맞춤 첫번째, 독립적 배포 저자의 의견에 따르면 6가지 중 하나만 골라야 한다면 독릭접 배포를 선택한다고 한다. 또한, 다른 마이크로서비스를 배포하지 않고, 마이크로서비스를 변경, 배포, 출시할 수 있다고 한다. 이를 위해서는 마이크로서비스 간 결합도를 낮춰야 하며, 서비스 간에 명시적이고 잘 정의되고 안정된 명세 계약이 필요하다고 한다. 두번째, 비즈니스 도메인을 중심으로 모델링 도메인 기준으로 서비스 경계를 정의한다. 즉, 한 마이크로서비스가 기능에 필요한 전체를 구현하며, 이를 통해 새 기능 출시가 쉬워진다. 또한 다른 방식으로 마이크로서비스를 재조합하기 쉬워진다. 한 기능.. 2022. 3. 27. [우아콘2021] 도메인 원정대 [우아콘2021] 도메인 원정대 여는 글 우아콘2021에서 박재성님이 발표하신 도메인 원정대를 정독해 보았다. 이전에는 다소 모호하고 명확히 이해하지 못했던 도메인 주도 설계와 관련된 주요 개념들에 대해 제대로 이해하게 되는 계기가 된 것 같다. 전체적으로 주요 강연 내용을 담되, 강연자이신 박재성님께 질문 드린 내용과 개인적으로 관련해서 공부하며 알게된 사실을 담아보았다. 이 글의 출처인 도메인 원정대 영상 무엇이 문제인가? 물류 센터 관리자는 재고가 없을 때 품목을 주문할 수 있도록 재고 보고서를 인쇄할 수 있어야 한다. 위 글을 보면 단번에 재고 보고서 인쇄 기능을 구현하기 위해 poi 라이브러리를 공부하려 할지도 모르겠다. 하지만, 위 문제는 재고가 없을 때 자동으로 주문이 되도록 하는 것이 옳은.. 2022. 3. 24. [우아콘 2020] 이동욱 님의 수십억건에서 QUERYDSL 사용하기 보호되어 있는 글 입니다. 2021. 10. 22. [우아한 세미나] Redis 그리고 개인적인 탐구 내용들 레디스 기초 레디스 소개 인-메모리 자료구조 저장소 오픈소스(BSD 3 License) 싱글 스레드 C 언어로 개발 지원 자료 구조 문자열, 세트, 정렬된 세트, 해쉬, 리스트 하이퍼 로그 로그, 비트맵, 지오스패셜 인덱스 스트림 지원자가 한 명! 캐시란? 나중에 요청된 결과를 미리 저장해두었다가 빠르게 제공 해주는 것 ex) 팩토리얼 이전 단계 저장 파레토 법칙 전체 요청의 80%는 20%의 사용자 캐시 구조 Look aside cache 일반적인 경우 Write Back 쓰기가 빈번한 경우(ex.로그) 모아서 처리해서 쓰기가 빠르지만.. 유실의 위험이 있다.. 컬렉션 데이터를 저장하는 자료 구조를 제공해줘서 개발이 편하고 난이도도 내려감. 멤캐쉬는 제공해주지 않음! 개발의 편의성: Sorted Set.. 2021. 9. 29. [우아한 테크 세미나] 컴파일 vs 빌드 원시 파일(소스코드)를 컴파일러로 컴파일 하면 오브젝트 파일이 생성됩니다. 이 오브젝트 파일을 링크 시켜 하나의 실행 가능한 파일로 만들어 주는 것이 링커 입니다. 그리고 여러 소스코드를 하나의 실행 파일로 만들어주는 일련의 과정을 빌드라고 하고 이를 처리해주는 것이 빌더 입니다. 정리하자면 빌드 도구란 소스 코드로 부터 실행 가능한 어플리케이션을 생성하는 것을 자동화하는 프로그램을 말합니다. 여기서 자동화란 빌드와 같은 일련의 프로세스 중 사람의 손을 거치는 반복적인 작업을 프로그램으로 처리하여 효율화하는 것을 말합니다. 2020. 9. 21. 이전 1 다음 반응형