본문 바로가기

공부

시스템 설계란 시스템 설계(System Design)는 소프트웨어 애플리케이션의 구조와 작동 방식을 정의하고 계획하는 과정입니다. 이는 요구 사항을 기반으로 시스템의 다양한 구성 요소(데이터베이스, 서버, API, 캐시, 로드 밸런서 등)를 설계하고, 이들 간의 상호작용을 정의하여 시스템이 효율적이고 안정적으로 작동하도록 하는 것을 목표로 합니다. 시스템 설계는 대규모 애플리케이션을 구축하는 데 필수적인 단계로, 성능, 확장성, 보안성, 유지보수성 등을 고려하여 최적의 아키텍처를 구성합니다. 장점:문제 해결 및 요구 사항 충족: 요구 사항 분석을 통해 시스템이 해결해야 할 문제와 필요 기능을 명확히 하여 적절한 솔루션을 제공합니다.성능 최적화: 적절한 캐싱 전략, 데이터베이스 구조, API 설계 등을 통해 시스템의 응.. 더보기
Spring과 Node.js Spring과 Node.js는 웹 애플리케이션 개발을 위한 백엔드 기술 스택이지만,근본적으로 다른 언어와 아키텍처를 사용Spring은 Java를 기반으로 하는 프레임워크이고, Node.js는 JavaScript를 기반으로 하는 런타임 환경  Spring: Spring은 Java로 개발된 강력한 엔터프라이즈급 애플리케이션 프레임워크 대규모 애플리케이션을 위한 구조화된 개발을 지원하며, 모듈화, 의존성 주입, 트랜잭션 관리, 보안 등 다양한 엔터프라이즈 기능을 기본으로 제공 Spring Boot는 Spring 애플리케이션을 보다 쉽게 설정하고 시작할 수 있게 해주는 확장Node.js: Node.js는 Chrome V8 JavaScript 엔진을 기반으로 하는 서버 사이드 JavaScript 런타임 환경비동기.. 더보기
백엔드 아키텍처란 백엔드 아키텍처는 서버, 데이터베이스, 애플리케이션 로직, API, 보안, 성능 최적화 등 서버 사이드의 구조와 설계 방식이는 애플리케이션의 안정성, 확장성, 유지보수성, 성능을 결정하는 중요한 요소로, 비즈니스 요구 사항과 기술 스택에 따라 다양한 형태로 설계주요 백엔드 아키텍처 유형에는 모놀리식 아키텍처, 마이크로서비스 아키텍처, 서버리스 아키텍처 등 장점:모놀리식 아키텍처:단일 코드베이스로 관리되어 개발 및 배포가 간단통합된 환경으로 테스트와 디버깅이 용이초기 개발 비용과 복잡도가 낮음마이크로서비스 아키텍처:각 서비스가 독립적으로 개발, 배포, 확장될 수 있어 유연성이 높음특정 기능의 문제로 전체 시스템에 영향이 미치는 것을 방지다양한 기술 스택을 서비스별로 사용가능서버리스 아키텍처:인프라 관리 부.. 더보기
RDBMS와 NoSQL의 차이 RDBMS(Relational Database Management System)와 NoSQL은 데이터를 저장하고 관리하는 두 가지 주요 유형의 데이터베이스 시스템각 시스템은 고유한 데이터 모델과 사용 사례에 맞게 설계RDBMS: 관계형 데이터베이스 관리 시스템으로, 데이터를 테이블 형식으로 저장하며, 각 테이블은 열(필드)과 행(레코드)로 구성SQL(Structured Query Language)을 사용하여 데이터를 정의, 관리, 쿼리 데이터 간의 관계를 명확히 정의하고, 스키마를 통해 데이터 무결성을 유지하는 것이 특징예시로 MySQL, PostgreSQL, Oracle, SQL Server 등NoSQL: 관계형 데이터베이스의 제약을 벗어나 다양한 데이터 저장 모델(문서, 키-값, 그래프, 열 기반 등.. 더보기
블록킹(Blocking), 논블록킹(Non-Blocking)이란? 블록킹과 논블록킹은 코드 실행의 흐름과 자원의 사용 방식에 관한 개념블록킹 (Blocking): 블록킹은 해당 작업이 완료될 때까지 프로그램의 실행이 멈추는 방식 예를 들어, 데이터베이스에서 데이터를 가져오는 동안 다른 작업을 수행할 수 없고, 데이터가 준비될 때까지 기다려야함 일반적으로 동기식 호출과 연관이 있으며, 처리 순서가 직관적논블록킹 (Non-Blocking): 논블록킹 호출은 작업이 즉시 반환, 해당 작업이 완료될 때까지 기다리지 않는 방식 프로그램은 다른 작업을 계속해서 수행할 수 있으며, 작업이 완료되면 그 결과를 처리 비동기식 호출과 관련이 있으며, 자원 활용을 최적화 가능장점:블록킹:코드가 간단하고 이해하기 쉬움직관적인 흐름으로 디버깅이 용이요청이 적거나 성능이 중요한 요소가 아닌 경.. 더보기
추천 시스템을 위한 MLFlow 환경 구축하기 모델 배포를 위해 mlflow환경을 docker를 통해 구축하고자 한다. 첫번째로 모델을 저장할 버킷에 대한 설정을 해주는데 minio라는 것을 사용하려한다.사용 이유 첫번째는 공식문서에서 mlflow와 함께 사용하는 방법을 명시해두었기 때문이다.내 설정에 맞게 사용하기 편하기 때문에 선택했다https://blog.min.io/setting-up-a-development-machine-with-mlflow-and-minio/ 두번째 추후 배포할 때를 고려해 AWS s3의 API와 호환되어서 추후에 변경이 용이하다.(mlflow에서 S3를 권장하고 있는것도 한 몫함) mlflow-artifact-store: env_file: - .env image: minio/minio con.. 더보기
[Claude] 이미지에 대한 설명 여러 LLM 서비스가 있지만 Claude는 무료로 이미지와 파일을 주고 설명하라고 할 수 있다.성능도 괜찮은데 무료라서 자주 사용하고있다. 해당 이미지는 트랜스포머 모델의 기본적인 아키텍쳐다.이 그림에 대해서 설명을 하라고 해보자 좀 더 디테일하게 질문을 해보자 설명을 잘한 것 같지만 뭔가 출력 형식이 불만족스러우니 JSON 형태로 출력하게 바꾸자{ "Transformer": [ { "component": "입력/출력 임베딩", "role": "텍스트를 벡터로 변환", "method": "각 단어나 토큰을 고정된 길이의 밀집 벡터로 매핑" }, { "component": "위치 인코딩", "role": "시퀀스 내 단어의 순서 정보 제공", .. 더보기
[3년차 텐서플로우 이용자의 pytorch 사용기] 커스텀 데이터 셋 사용하기 이전에 졸업 작품과 다른 연구에서 Eelectra 모델과 BERT를 이용하려고 pytorch를 사용했던 적이 있었는데 그때는 단일 모델에 CSV에 저장된 데이터를 사용했기 때문에 큰 어려운은 없었다 하지만 이번에 연구를 위해 CNN-LSTM 기반 모델을 사용하는데 데이터를 메모리에 로드하는 과정이 추가된것 코드를 간단하게 작성할 수 있는 파이토치 라이트닝을 사용할 예정이다.  일반 파이토치는 훈련과정을 에포크 for문을 통해 작성을해야해서 여간 귀찮은게 아닌...  일단 데이터셋 클래스를 작성해준다.import numpy as npfrom keras.preprocessing.image import img_to_array, load_imgfrom keras.applications.mobilenet_v2 i.. 더보기