MacOS 기반의 서버를 세팅해야해서 도커 데몬 & VM 엔진을 찾아보면서 고민한 점을 요약해본다.Docker Desktop vs lima vs colimaDocker Desktop는 상용화 하려는 서비스에 사용하려면 라이선스 문제가 생길 수 있다고 들어서 일단 제외.250명 미만, 연 매출 1000만 달러 미만 조건은 당연히 넘을 거라 생각한다(?) 나머지는 솔직히 뭐가 뭔지 몰라서 검색해봤다.우리에겐 GPT 라는 놈이 있지만 Nostalgic(?)한 구글 검색을 사용해봤다. 그리고 요즘 GPT에 대한 신앙심이 낮아졌다. 출처: https://news.ycombinator.com/item?id=36669121 뭐 그렇단다. 대충 요약하면:lima: 오픈소스라서 상용화 서비스에 사용 가능. 문제는 조금 ..
🤖 Code Hallucination은 왜 생길까?AI한테 코드 짜보라 하면 없는 함수나 틀린 라이브러리 문법이 종종 나옴.이런 걸 _code hallucination(환각 코드)_이라 부름.주된 원인은 다음과 같음:📚 오래됐거나 부정확한 문서 학습한 결과❓ 질문에 맥락이 부족함🧩 현재 사용하는 라이브러리/프레임워크 버전에 대한 정보 없음AI는 비슷한 사례 바탕으로 일반화된 코드를 생성하는데, 정보가 부족하면 결국 추측에 의존하게 됨.🧠 어떻게 줄일 수 있을까?Hallucination 줄이려면 AI한테 정확한 문맥을 줘야 함.✅ 필요한 정보사용 중인 프레임워크/라이브러리 버전공식 문서 + 최신 예제 코드해결하려는 구체적인 조건과 상황🚀 그래서 Context7을 씀Context7은 AI가 최신 문..
시작하며 AI를 활용한 사이드 프로젝트를 진행하며 다음과 같은 조건을 충족하는 프레임워크를 찾고 있었다:뷰(View) 작성이 가능한 언어 사용OpenAI SDK가 제공되는 언어 사용API 키를 제3자에게 노출하지 않고 OpenAI API 호출 가능콘텐츠를 웹에 노출하지 않고 로컬에서 임베디드 데이터베이스 또는 파일 시스템 활용이 조건을 만족하는 프레임워크로 Electron과 Tauri를 알게 되었고, 이 중 Tauri를 선택하게 된 이유와 초기 설정 과정을 공유한다.왜 Tauri인가?장점:경량화:Tauri로 빌드한 애플리케이션은 Electron에 비해 실행 파일 크기가 훨씬 작다.Electron은 자체적으로 Chromium과 Node.js를 포함하기 때문에 무겁지만, Tauri는 시스템의 네이티브 웹뷰(..
MLOps란? Machine Learning + DevOps = MLOps ML 시스템 개발(Dev)과 ML운영(Ops)을 통합하는 것을 목표로 하는 ML엔지니어링 문화 및 방식 MLOps 구성 요소 1. 데이터 데이터 수집 / 파이프라인 - 데이터 수집, 전처리, 로깅 - Sqoop, Flume, Kafka, Flink, Spark Streaming, Airflow 데이터 저장 - RDBMS, 분산 저장, 오브젝트 스토리지 등등 - RDBMS, Hadoop, Amazon S3, MinIO 데이터 관리 - 데이터 Validation Check, 데이터 버전 관리, Feature Store - TFDV(TensorFlow), DVC(Data Version Control), Feast, Amundsen 2...
Key React가 어떤 항목을 변경, 추가 또는 삭제할지 식별하는 것을 돕는다. element에 안정적인 고유성을 부여하기 위해 배열 내부의 엘리먼트에 지정해야한다. 다른 항목들 사이에서 고유하게 식별할 수 있는 것을 사용한다. 통상적으로 data.id 값을 key로 사용한다. 렌더링 한 항목에 부여할 id값이 마땅히 없다면 index를 key로 사용할 수 있으나 순서가 바뀔 수 있는 경우에는 key에 인덱스를 사용하는 것은 지양해야한다. 성능이 저하되거나 state와 관련된 문제가 발생할 수 있기 때문이다. 만약 리스트에 key를 지정하지 않으면 React는 기본적으로 index를 key로 사용한다. 일반적인 사용법은 map() 등 iterate 하는 함수 내부에 컴포넌트를 생성할때 인자로 key값을..
특수 권한 비트 SetUID & SetGID SUID Set UID의 약자 프로세스가 실행중인 동안 일시적으로 해당 실행 파일의 소유자, 소유그룹의 권한으로써 자원에 접근할 수 있도록하는 권한 설정 즉, SUID가 설정된 프로그램을 실행시키면 프로세스로 동작하는 동안에 RUID는 실행시킨 사용자의 UID로 설정되고 EUID는 실행파일 소유자의 UID로 설정된다. 따라서 실행시킨 사용자(user)와는 무관하게 프로세스가 실행중인 동안에는 실행파일 소유자의 권한으로 자원에 접근하게 된다. SGID Set GID의 약자 SUID로인해 RUID와 EUID가 해당 UID로 설정되는것과 같이, SGID로 인해 RGID와 EGID가 해당 GID로 설정된다. 이러한 SGID가 설정되지 않은 프로세스를 실행시키면 RUI..
저장소 관리 전략의 필요성 프로젝트 초기에는 모노리딕 시스템으로 서비스를 구현하게 된다. 다만 프로젝트가 거대화되면서 모노리딕 시스템은 높은 결합도와 낮은 응집력을 가지고 있기에 이를 해결하기 위해서 개발 조직은 시스템의 각 부분을 도메인 별로 분리해서 마이크로 서비스로 구성하기 시작하게되며 이때 개발 조직은 쪼개진 각 서비스를 하나의 리포지토리에서 관리할지, 각자 다른 리포지토리에서 관리할지 고민하게 된다. 모노리포, 멀티리포 저장소 관리 방식은 프로젝트의 규모, 개발 환경, 팀 구성 등 다양한 요소에 따라 선택되며, 이 중에서 가장 일반적인 방식으로는 모노레포와 멀티레포가 있다. 리포지토리를 관리하는 방법은 시스템의 각 모듈을 개별 리포지토리에서 관리할 것인지, 하나의 리포지토리에서 관리할 것인지에 ..
InfluxDB란?Go 언어로 개발된 오픈소스 Time Series Database(시계열 데이터베이스)Influx DB는 Distributed, Scale horizontally하게 설계되어 새로운 노드만 추가하면 손쉽게 scale-out할 수 있다. 즉 데이터 샤딩이 가능하다.Restful API를 제공하고 있어 CRUD API 통신이 가능하다. 최근 InfluxDB 2.x의 경우 자체 UI를 제공하며 서버 접근용 토큰을 발급할 수 있다. 자세한 내용은 여기에서 확인할 수 있다.즉, 가장 유명한 TSDB 이고, 많은 쓰기 작업 및 쿼리 부하를 위한 DB이며, Rest API 제공한다. InfluxDB의 핵심 기능☞ InfluxDB는 2가지 핵심 기능을 제공하고 있다.일정 주기마다 데이터를 처리하는 기..
회원 테이블의 특징 및 설계 결정 요소 거의 모든 서비스에서 참조하는 테이블이기에 READ 작업이 많아 불필요한 컬럼의 읽기가 일어나면 좋지 않을 수 있다.그렇기에 1:1 매칭되는 컬럼이 있더라도, 정규화를 해서 분리하는 것이 좋다고 판단했다.기본 테이블 구성에는 회원 정보, 회원 인증 정보등이 필요하지만 좀 더 나은 회원 데이터 관리를 위해서 필요한 정보들은 로그 데이터 및 휴면 계정 데이터 등이 있다.테이블 구성회원 정보회원 인증로그스키마 단위로 나누면 보안 그룹 설정 관리와 MSA 적인 측면을 고려할 수 있다. 회원 인증 정보를 따로 두는 이유는 최근에는 엄청 다양한 로그인 방식이 있기 때문에 따로 둬서 관리하는 방법이 더 효율적이라고 생각했다. 아래는 각 스키마 별 구성이다.회원 (MEMBER)m..
Spring Cloud Config 분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리 하나의 중앙화된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고, 바로 적응 가능 애플리케이션 배포 파이프라인을 통해 환경에 맞는 구성 정보 사용 (예: DEV, UAT, PROD) 방법 1. github에 Repository를 Private으로 생성하고 yml 파일 업로드 아래는 파일명 예제 예) chatapp-dev.yml, chatapp-prod.yml 2. github 엑세스 토큰키 생성 3. 스프링 부트 프로젝트 생성하고 build.gradle 수정(최신 스프링부트 버전 3.0.5 기준) 좀 더 안정화된 버전을 쓰고 싶다면 스프링 부트 2.5.x나 2.7.x 라인을 ..
- Total
- Today
- Yesterday
- 분산 처리
- Spring cloud
- MLOps
- Textual Inversion
- spring boot
- context7
- docker
- discord bot
- vae
- spring cloud config
- colima
- load balance
- Multirepo
- Hypernetwork
- Microservice
- 토이 프로젝트
- monorepo
- 회원 테이블
- 모노레포
- oauth2
- 멀티레포
- tauri
- Kubernetes
- stable diffusion
- 디스코드 봇
- 형상 관리
- docker desktop
- 소프트웨어 방법론
- Polyrepo
- springboot
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |