전체 글
AI 일기 프로그램을 통해 본 인공지능과 머신러닝, LLM에 대한 개념
최근 Open AI의 상업용 API를 통해 일기를 분석해주는 AI 성장일기라는 웹 프로그램을 만들었다. 일기에서 볼 수 있는 핵심 가치, 반복된 사고, 감정 상태를 분석하고, 필요로 하는 다음 행동에 대해 추천하는 식으로 결과를 받았었다. 이 때, 나는 Prompt에 몇 가지 감정 상태에 대한 Scale값을 미리 전달했었는데, 같은 일기에 대해 매번 결과값이 상이한 것을 보았다. 몇몇의 지인들에게 프로그램을 사용하게 해보았더니, "답변이 좀 어색하다."라는 대답을 받았다. 스스로 AI에 대한 상식이 부족함을 느꼈다. 그래서 머신러닝과 인공지능에 대한 강의들을 속성으로 듣고 관련된 책을 찾았다. 실제 머신러닝 강의에서는 아래보다 더 많은 내용을 다룬다. 딥하게 가면 선형대수와 같은 수학에 대한 사전 지식이..
조립식 PC 부팅이 안 될 때, RAM 상태를 확인하기
나는 조립식 PC를 쓰고 있다. 조립식 PC를 구매하면 좋은 점은, 내가 원하는 맞춤형 사양을 비교적 저렴하게 구매할 수 있다는 것. 다만 단점은 PC가 맛이 갔을 때 해결은 내가 해야한다는 점이다. * 내돈내산으로 구매했던, 다나와 PC 견적 사이트 -- [바로가기] 내 PC도 어쩌다 한 번씩 부팅이 잘 안 될 때가 있다. 대체로 원인은 RAM이 더러워져서 발생하는 경우가 많았다. 그럴 때 해결하는 법. [방법1] 일단 RAM을 꺼냈다가 다시 끼워본다. - RAM을 반대로 끼울 때도 있다. 그래서 안 될 수도 있음- RAM이 완전히 안 껴졌을 때가 있다. 그러면 안 됨 [방법2] RAM 끝을 확인해본다. 드럽다면 손으로 한 번 닦아준다. 그래도 안 되면 "깨끗한" 지우개로 한 번 지운다. * 대신,..
윈도우와 맥 모두 호환되는 키보드
요즘 취미로 글쓰기 모임을 시작했다. 가볍게 릴레이로 글을 쓰는데 손맛이 좋은 키보드를 갖고 싶었다. 와중에 코딩도 해야해서 윈도우랑 맥이 호환되는 키보드를 찾았다. 엑토 레트로2 블루투스 키보드 B307 옛날 타자기에 대한 로망을 갖고 있었는데 일단 비주얼에서 만족했다. 누를 때 소음이 좀 나는 편이라서 회사에서 쓰기는 그렇고, 집에서 쓰기 좋다. PC뿐 아니라 블루투스로 핸드폰이나 태블릿을 연결할 수 있어서 유용하게 쓰고 있다.
Oracle Virtualbox로 Windows에 Mac 운영체제 설치하기
시작하기 전에 - 가상화 기술의 종류 돌아보기 가상화 기술은 크게 세 가지로 나뉜다. 1) 호스트 가상화, 2) 하이퍼바이저 가상화, 3) 컨테이너 가상화.호스트 가상화의 경우, 호스트 OS에 설치 프로그램을 받아 실행하는 것으로 게스트 OS를 쓰는 방식을 말한다.하이퍼 바이저는, Windows에 딸려있는 Hyper-V 같이 하드웨어에 붙어 있는 가상화 기술을 말한다. 컨테이너는, Docker 같이 각각의 컨테이너로 격리된 공간을 나누고, 호스트 OS의 자원을 공유할 수 있게 한 기술을 말한다. 이번에 설치하는 Oracle Virtualbox는 이 중에서도 호스트 가상화 기술을 사용한 것이다. 호스트 가상화하이퍼바이저 가상화컨테이너 가상화내용HW에 설치된 호스트 OS 상에 가상화 SW가 설치되고 그..
Spring Cloud - Netflix Eureka, Spring Gateway
MSA- 어플리케이션을 목적에 따라 여러 개의 독립적인 서비스로 분할하여 개발하고 배포하는 방식 MSA의 특징- 독립된 각 서비스 마다 고유의 ip와 port를 가진다.- 각각의 서비스가 분산되어 있기 때문에, 배포와 테스트가 어렵다 MSA를 왜 쓸까?느슨하게 결합된 서비스들의 모임으로 프로젝트를 구성함으로써, 전체 시스템 구조를 논리적으로 구분해 이해하고, 고가용성(부분 장애가 전체 장애로의 확장을 막음)을 높이며, 분산 처리를 가능하도록 하기 위함 MSA를 편리하게 하기 위한 아키텍처 컴포넌트 스프링 클라우드(Spring Cloud)분산 시스템의 몇가지 공통된 패턴들을 빠르게 빌드할 수 있도록 다양한 툴을 제공해 준다.예를 들어, Configuration management(설정 관리), Se..
[Spring Cloud & MSA] Spring Cloud Netflix Eureka
1. Spring Cloud Netflix Eureka - 유레카는 Service Discovery 중 하나이다. - Service Discovery는 말 그대로 서비스를 찾아주는 것으로써, 어느 위치에 어떤 서버가 있는지를 찾아준다. rf. key / value 형태로 서비스를 등록하고 검색할 수 있도록 해준다. - 넷플릭스 자사의 기술들을 Java Spring 재단에 기부를 하면서 만들어진 것이 Eureka이다. - Eureka를 쓰려면 먼저 서비스를 등록해야 한다. - Client에서 요청이 Load Banlancer로 들어오면 Service Discovery가 서비스의 위치를 찾아준다. 2. 프로젝트 환경 구성 [1] 프로젝트 생성 - 마인드챗이라고, 내 마음 속 이야기를 채팅창에 적을 수 있는 ..
[Spring Cloud & MSA] MSA와 Spring Cloud
시간이 지날 수록 소프트웨어는 Antifragile한 아키텍처를 구성하고자 하였으며, Cloud Native한 아키텍처를 구성하고자 했다. 아래는 그러한 소프트웨어 아키텍처의 특징을 정리한 내용이다. 1. Antifragile 아키텍처 1) AutoScaling (자동확장성) : 상황에 따라 인스턴스의 갯수를 자동으로 늘리는 등 자동 확장이 가능한 것 2) Microservices : 세밀한 단위로 모듈과 기능을 세분화한 서비스. 넷플릭스와 아마존에서 가장 잘 구축했음 3) chaos engineering : chaos, 급격하고 예측 불가한 상황에서도 견딜 수 있을 만큼 안정적인 서비스 구축 4) continuous deployments : 지속적인 통합/배포를 의미 2. Cloud Native 아키텍..
[Docker] Prometheus와 Grafana를 통해 실시간 로그 확인
1. Prometheus란? - 관련된 신화 : 신으로부터 불을 훔친 자로써, 형벌로 동생에게 판도라라는 여성을 보내 판도라의 상자 사건이 일어남 - 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템이다. - 프로메테우스로 모니터링을 하려면 모니터링 항목 수집을 위해 Exporter라고 하는 Agent가 수행되어야 한다. ex. node_exporter, mysql_exporter, postgre_exporter, redis_exporter, kafka_exporter..... 2. Dockerfile로 mysqld_exporter와 node_exporter가 포함된 MySQL 컨테이너 생성하기 - Prometheus에서 모니터링을 하려면 MySQL 컨테이너..
[Docker] Proxy Layer 구성하기
1. Proxy Layer란 - Proxy Layer : 대리층 - ProxySQL : C++로 짜여진 오픈 소스 Proxy 프로그램으로 총 4개의 database schema를 가지며, Proxy를 컨트롤하고 모니터링할 수 있게 한다. - Proxy Layer를 두는 이유 : 앞서서 Orchestra 설정을 해두면 Master(db001)이 샷다운 되더라도 Slave(db002)이 자동으로 Master로 승격되어 고가용성, 곧 시스템이 지속될 수 있도록 할 수 있었다. 하지만, Application 입장에서는, Application의 자체 설정에 따라 기존의 Master(db001)을 계속해서 바라볼 수 있다. 이를 해결하기 위해 중간층인 Proxy Layer를 둘 수 있는데, MySql은 Proxy ..
[Docker] Orchestra를 통해 High Availability(HA) 구축하기
1. 고가용성이란? - 가용성 = Uptime / (uptime + downtime) - 고가용성 = 바람직한 정도로 긴 시간 동안 지속적인 운영이 가능한 시스템 또는 컴포넌트 - 고가용성의 시스템을 구축한다는 건 = 서비스가 다운되는 타임을 최소화하는 시스템을 구축한다는 것 2. HA 수동 설정 [1] Orchestra를 Docker로 생성하기 - Orchestra는 MySQL용 복제 토폴로지 관리자로서, 고가용성 및 복제 관리 툴을 말한다. - GUI/CLI/API를 통해서 상태를 확인하고 작업을 수행할 수 있다. docker run -it --name orchestrator -h orchestrator \ --net mybridge --net-alias=orchestrator \ -p 3000:30..