전체 글184 14가지 핵심 질문으로 알아보는 마이크로서비스 아키텍처 구축하기 서론위 글은 작년에 읽었던 MSA 아키텍처 구축하기 책을 요약 겸 복습하기 위해 정리한 글입니다. MSA 아키텍처에 대해서 이미 알고 있다는 가정 하에, 글을 작성합니다. MSA 아키텍처가 처음이신 분은 해당 글을 참고해주세요.핵심요약마이크로 서비스를 하는 이유는 뭘까?마이크로서비스 간 경계를 구분하는 적합한 기준은 무엇일까?마이크로서비스 모델링 방법정보 은닉결합응집력도메인 주도 설계전환을 결정했다면, 어떻게 MSA로 전환하는 것이 좋을까?마이크로서비스 통신 방식비동기 호출과 동기 호출이벤트 기반의 협업 방식공통 데이터 방식마이크로서비스의 통신을 구현하는 방법은 무엇일까?마이크로서비스에서 버전 관리를 어떻게 처리해야 할까?분산 트랜잭션은 어떻게 보장할까?마이크로서비스는 어떻게 배포할까?마이크로서비스 테스.. 카테고리 없음 2025. 2. 22. 1분강의 TechSpec 요약 (Summary)월급쟁이부자들에서 제작된 웰메이드 재테크 영상 컨텐츠들을 통해, 사용자들에게 재테크 정보를 전달합니다. 이 프로젝트는 사용자들이 서로 소통할 수 있도록 영상 컨텐츠에 대한 댓글과 좋아요 기능을 개발하는 것을 목표로 합니다. 관리자는 영상을 업로드하고, 사용자는 댓글을 달며, 좋아요 기능을 활용할 수 있습니다. 커뮤니티 기능을 강화하여 사용자 참여를 증대하려 합니다.배경 (Background)기존 커뮤니티 기능이 부족해 사용자가 단순히 조회 밖에 하지 못하는 문제가 있었습니다. 사용자들은 의견을 나누고, 토론할 수 있는 공간이 존재할 때, 더 오래 플랫폼에 체류하고 더 자주 방문할 것으로 예상합니다. 경쟁 커뮤니티 사이트들은 이러한 기능을 통해 높은 사용자 활동성을 보이고 있어 시장에.. 기타 2025. 2. 19. 간단하게 실습하며 배우는 Kubernetes와 Terraform (1) 로컬 Kubernetes 클러스터에 웹 서버 배포 자동화하기 서론오늘 로컬 환경에서 Kubernetes 및 Terraform에 대해 간단하게 실습하며, 적용해보겠습니다.참고로 설명은 Mac OS (M1 2020) 환경에 맞춰져 있습니다. Homebrew가 설치되어 있다는 가정 하에 실습이 진행됩니다.또한 Kubernetes 클러스터를 로컬에서 실행하기 위해, Docker가 로컬 환경에 설치된 상태여야 합니다.목표 이번 목표는 로컬 환경에서 Kubernetes 클러스터 위에 웹 서버 배포를 Terraform으로 자동화하는 것 입니다. 1단계 : 실습 환경 구축간단하게 Mac에서 brew를 이용하여, Kubernetes와 Terraform을 사용할 수 있는 환경을 구축해보겠습니다.brew install kubectl kubernetes-cli helm kind ter.. Infra 2025. 2. 8. [Batch] 배치 애플리케이션의 이해와 Spring Batch 기본 활용법 배치의 정의와 필요한 이유1. 배치의 정의배치(Batch)는 대량의 데이터를 정기적이고 반복적으로 처리하는 프로그램입니다. 주로 사용자가 없는 새벽 시간대에 실행되며, 대규모 데이터의 처리, 집계, 변환 등 비즈니스 로직을 실행하는 데 활용됩니다. 2. 배치 애플리케이션이 필요한 이유x2.1 WAS와 배치의 구분WAS (Web Application Server)는 사용자 요청을 실시간으로 처리하는 서버입니다.하지만 배치와 같이 대규모 데이터를 처리하거나 비즈니스 로직을 길게 실행해야 하는 작업은 WAS에서 실행하기 적합하지 않습니다.주요 이유는 다음과 같습니다:성능 문제: 실시간 요청을 처리하는 서버에서 대량 데이터 작업을 수행하면, 응답 속도가 느려져 사용자 경험이 저하됩니다.안정성 문제: 장시간 실행.. Framework/Spring 2025. 1. 19. [Index] 플랫폼 내 페이지네이션 방식에 대한 개선사항 제안 게시글 목록 개편2024년 4월, 월부 커뮤니티에서는 ‘잘 보여주기’를 위해, 더 많은 컨텐츠를 한 화면 안에서 보여주기 위해 썸네일을 제외하여 보여주는 방식으로 변경되었습니다. 기존에는 무한스크롤 방식으로 조회되던게, 페이지네이션 UI를 통한 검색으로 변경되었습니다. 이와 더불어, 마지막 페이지 조회가 가능하도록 변경되었습니다. 변경된 조회 방식으로 인해, 발생된 문제점과 단/장기 개선사항에 대해서 정리하여 보였습니다.현재 월부의 페이지네이션 방식 : LIMIT OFFSET현재 플랫폼의 페이지네이션 방식은 LIMIT OFFSET 방식을 사용하고 있습니다. 이 방식은 간단하고 구현이 쉬운 장점이 있지만, 대규모 데이터셋에서 성능 저하와 일관성 문제를 일으킬 수 있습니다.LIMIT OFFSET의 성능 저하.. DB/MySQL 2025. 1. 18. [Java] JVM의 동작 원리 (부제 : Java를 처음 공부하는 당신에게) Java의 탄생 배경Java는 1991년 썬 마이크로시스템즈(이하 썬)의 제임스 고슬링과 아서 밴 호프를 주축으로 한 엔지니어들이 플랫폼으로부터 독립적으로 실행 가능하도록 개발한 언어입니다. 참고로 여기서 플랫폼이란 운영체제와 CPU 아키텍처를 말합니다. 대표적으로 Windows, Linux, Mac 그리고 x86과 핸드폰에 주로 쓰이는 arm이 있습니다. 이해를 높이기 위해서, 잠시 91년도로 돌아가볼까요? 90년대 초는 C와 C++ 의 사용률이 높았던 시절입니다. 그들은 왜 당시 핫했던 C나 C++를 사용하지 않았을까요? 객체지향 프로그래밍을 하려면 C++로도 가능했지만, C++는 플랫폼에 따라 컴파일러에 차이가 있어 플랫폼 간 실행파일의 호환성이 보장되지 않았습니다. 이는 인터넷의 발전으로 다양한 .. Language/Java & Kotlin 2025. 1. 18. [CS] 프로그램, 프로세스, 쓰레드 서론오늘은 프로그램, 프로세스, 쓰레드의 차이점에 대해서 알아보도록 하겠습니다.본론프로그램과 프로세스의 차이프로그램이란 저장장치에 저장되어 있어 언제든지 실행 가능한 파일을 말합니다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 실행될 수 있는데, 프로그램은 아직 메모리에 올라가 있지는 않은 상태입니다.반면, 프로세스란 컴퓨터에서 실행되고 있는 컴퓨터 프로그램을 말합니다. 이는 프로그램과는 다르게, 메모리에 올라와 있는 상태입니다. 즉, 프로세스란 메모리에 올라와 있는 프로그램을 말합니다.프로세스와 쓰레드의 차이과거에는 프로그램을 실행할 때 실행 시작부터 실행 끝까지 프로세스 하나만을 사용해서 진행했다고 합니다. 그러나 프로그램이 더이상 하나의 작업 만을 수행하지 않게 되면서, 프로.. CS 2025. 1. 8. [Algorithm] 코딩테스트에서 자주 쓰이는 파이썬 수학 내장함수 1. 기본 내장 함수1.1 abs()절댓값을 반환합니다.print(abs(-7)) # Output: 71.2 max() / min()리스트나 튜플에서 최대값 또는 최소값을 구합니다.numbers = [3, 5, 2, 9]print(max(numbers)) # Output: 9print(min(numbers)) # Output: 21.3 sum()리스트나 튜플의 합계를 구합니다.numbers = [1, 2, 3, 4]print(sum(numbers)) # Output: 101.4 pow()거듭제곱 계산.print(pow(2, 3)) # Output: 81.5 round()반올림을 수행합니다. 두 번째 인자로 소수점 자리수 설정 가능.print(round(3.14159, 2)) # Output:.. CS/알고리즘 2025. 1. 4. [Algorithm] 코딩테스트를 위한 기본 알고리즘 정리 구현/시뮬레이션특징알고리즘 문제의 80%는 구현이다. 문제 풀 때, 대부분 구현 문제라고 접근해도 무방하다.접근방법모든 경우의 수를 따져야 함.주어진 범위 내에 모든 수를 탐색해보면서 조건에 맞으면 탐색한다.예시 1) 2503번: 숫자 야구세 자리 수의 동일한 자리에 위치하면 스트라이크 한 번으로 센다. 숫자가 세 자리 수에 있긴 하나 다른 자리에 위치하면 볼 한 번으로 센다.주어진 범위 → 세자리수스트라이크&볼 → 조건순회 → 모든 수 탐색민혁: 123 영수: 1 스트라이크 1 볼.민혁: 356 영수: 1 스트라이크 0 볼.민혁: 327 영수: 2 스트라이크 0 볼.민혁: 489 영수: 0 스트라이크 1 볼.이때 가능한 답은 324와 328, 이렇게 두 가지이다. import sysfrom iterto.. CS/알고리즘 2025. 1. 4. S3 Presigned URL 활용한 파일 업로드 방법 실습이론만 다루면 아쉬우니, 서버는 Java 환경, 클라이언트는 JavaScript 환경에서, 위 흐름대로 직접 서비스를 구현한 코드 예시를 보여 드리며, 직접 실습하여 봅시다. Spring 환경 설정 관련해서는 [Framework/Spring] - [Spring] Spring Boot 환경설정 가이드 을 참고하시길 바랍니다. 코드 상에서 S3를 활용하기 위해선, 아래와 같은 작업들이 수반되어야 합니다.AWS 계정 생성IAM Role 또는 Access Key & Secret Key 생성AWS S3 버킷 생성S3 버킷 CORS 설정 (파일 업로드를 위해)위와 관련된 부분은 본 게시글의 범위를 넘어가므로, 생략합니다.환경설정aws: s3: access: your-access-key # 수정 필요 .. 카테고리 없음 2024. 12. 25. 조편성 TechSpec과 테스트케이스 요약 (Summary)가장 먼저 테크 스펙을 세 줄 내외로 정리합니다. 테크 스펙의 제안 전체에 대해 누가/무엇을/언제/어디서/왜를 간략하면서도 명확하게 적습니다.조편성이란누가/무엇을 : 조편성이란 월부에서 함께 수강하는 사람들끼리 부동산 학습을 위해 짝 지어준 스터디 그룹을 말합니다. 조편성 프로그램은 이를 위해, 어드민 관리자 (CM분들)가 조 편성을 하기 위해, 설문 등록부터 조장/운영진 선발, 조원 배치, 노출확정 등의 기능을 제공합니다.언제/어디서 : 정규강의 신청과 설문 응답이 마감된 이후, 어드민 페이지에서 진행합니다.왜 : 월간 10,000명 부동산 강의 수강생들의 조장/조원 희망 여부 및 희망 지역(오프라인 임장지역) 응답에 따라, 수기로 팀 배정하였습니다. 2000명의 조편성 인원을 조.. 기타 2024. 12. 24. Spring Batch 프로젝트 테스트코드 최적화 방안 배경12월 4일 이후, Spring Batch 프로젝트의 테스트코드 양이 증가하며, OOM 문제로 인해, 테스트가 50분이 넘도록 돌아가지 않고 실패했습니다. 불과 100개도 안되는 테스트 였음에도 말이죠!! 무언가 이상했습니다. webapp은 300개가 넘는 테스트가 돌고 있음에도, 동일한 Heap Memory 스펙 하에서, 더 빠른 시간 안에 처리가 됐기 때문입니다.뿐 만 아니라, 테스트가 중간에 끝났음에도 Heap Memory Size는 줄어들지 않고 있었습니다. 이로써, Batch 쪽 테스트코드 로직에 문제가 있음을 직감할 수 있었습니다.문제해결과정테스트를 실행할 때, 갑작스럽게 OutOfMemoryError가 발생했을 때, 어딘가 메모리 누수가 발생되고 있다고 판단했습니다. 따라서 기존에 작성된.. 카테고리 없음 2024. 12. 21. 이전 1 2 3 4 ··· 16 다음 반응형