CI/CD란? Continuous Integration / Continuous Delivery 지속적인 통합(CI), 지속적인 제공(CD) 왜 필요할까? 매번 개발자가 코드를 수정하고 빌드 및 테스트 할 경우, 시간 소요가 커짐 git에 올리는 것 만으로, 빌드 → 테스트 → 배포까지 자동화하면 개발 시간을 더 확보할 수 있음. 위 과정을 자동화 할 수 있는 것 → CI/CD CI(Continuous Integration) 란? 빌드/테스트 자동화 과정 어플리케이션의 버그 수정, 코드 추가와 같이 변경 사항이 주기적으로 빌드 및 테스트 되면서 Repository에 통합(Merge)되는 것을 의미 그래서 지속적인 통합 이라고 하는 것 CD(Continuous Delivery) 란 ? 배포 자동화 과정 빌드..
인공지능, 머신러닝, 딥러닝 인공지능 학습방법 지도학습 모든 입력패턴에 대해 정확한 답을 가지고 신경망을 학습하는 방법. 입력이 주어짐에 따라 원하는 출력값이 활성화되도록 가중치를 조절 각 입력자료에 대해 원하는 목표 출력값을 대응시켜 학습자료 구성 비지도학습 목표값 없이 학습 데이터만 입력, 스스로 연결 가중치들을 학습 주어진 입력패턴 자체를 기억시키거나, 유사한 패턴을 군집화 시키는데 사용 입력에 대한 정확한 답을 알 필요가 없으며, 입력 데이터에 내재된 구조나 그 사이의 관계를 파악하여 패턴들을 분류 강화학습 데이터의 상태(State)을 인식하고 이에 반응한 행위(Action)에 대하여 환경으로부터 받는 포상(Reward)을 학습하여 행위에 대한 포상을 최적화하는 정책(Model)을 찾는 기계학습 ..
Event Driven Architecture Event Driven이라는 용어는 programming, architecture와 연결되어 다양한 정의로 표현 💡 EDA (Event-driven architecture) 분산된 시스템 간에 이벤트를 생성, 발행 (publishing)하고 발행된 이벤트를 필요로하는 수신자에게 전송 이벤트를 수신한 수신자가 이벤트를 처리하는 형태의 시스템 아키텍쳐 Event Driven Pattern - 특정 행동이 자동으로/순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작하는 디자인 패턴 IO Event - 컴퓨터 회로를 구동시키기 위해 발생하는 일 ( ex) 마우스 클릭, 키보드 타이핑, 모바일 터치 등) IoT 기기 등의 센서로부터 유입되는 데이터 스트리밍..
메시지 큐 (Message Queue) 프로세스 또는 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 통신 방법 End-Point 간 직접 통신이 아닌 중간의 Queue를 통해 데이터를 통신 Kafka LinedIn에서 개발한 메시지 큐 방식 기반, 분산 메시징 시스템 kafka 용어 설명 Broker : 각각의 kafka server를 이야기 함 Topic : Producer에서 전달한 메시지가 저장되는 곳, 메시지들의 카테고리 Partition : Topic은 여러 파티션으로 구성되어 있음, topic내에서 메시지가 분리되어 실제로 저장 Offset : 하나의 메시지 단위를 레코드라고 표현, 이러한 레코드들의 ID가 오프셋, 배열의 Index 개념 Zookeeper : Kafka Cluster에..
Tokenization(토큰화) 란? Text를 여러 개의 Token으로 나누는 것 Tokenizer 입력된 텍스트를 모델에서 처리할 수 있는 데이터로 변환하는 것이 목적 모델은 숫자만 처리할 수 있으므로, 토크나이저는 텍스트 입력을 숫자 데이터로 변환 단어 기반 토큰화(Word-based Tokenization) 각 단어에는 0부터 시작하여 어휘집(Vocabulary) 크기 사이의 ID가 할당 모델은 위에서 할당된 ID를 활용하여 단어 식별 “dog”와 “dogs”가 다르게 식별 되기 때문에 엄청난 양의 토큰이 생성됨 모델은 연관성 판단이 안되기 때문에 단어 사이의 유사성을 알 수 없음 어휘집에 없는 단어는 “unknown” 토큰으로 표현 어휘집을 만들 때 unkown 토큰을 최대한 적게 출력하는 것이..
파이썬 3.6 이상에서 작동하는, 표준 파이썬 타입 힌트를 바탕으로 한, 현대적이고 빠른 API 서버 웹 프레임워크 Flask와 비슷한 구조를 가짐 기본적으로 비동기식으로 작성되어 있어 빠른 성능을 보여줌 FastAPI 장점 공식 블로그의 장점에는 아래와 같은 설명이 기재되어 있다. Node.js, Go와 비슷한 수준의 빠른 성능 Go는 태생부터 C와 속도 경쟁할 만큼 빨랐는데, 이러한 Go와 비견될 정도의 속도라면 충분히 장점이 될 것 개발 속도 200%~300% 향상 코드 버그 40% 감소 쉬운 사용 부가적인 기능 자동으로 API Documentation을 지원하기 때문에, 서버를 구동하고 /docs 로 접속하면 Swagger UI가 나옴 데이터의 타입을 명시해줄 수 있음 아래 예시는, 데이터를 정의..
일대일(One-to-One) : 하나의 요청이 하나의 서비스를 실행할 경우 일대다(One-to-Many) : 하나의 요청이 여러 서비스를 실행할 경우 위와 같이 호출 하는 쪽과 호출을 받는 쪽으로 구분을 하거나 동기(Synchronous) : 요청을 보내고 응답이 올 때 까지 기다리는 방식 비동기(Asynchronous) : 요청을 보내고 응답을 기다리지 않고 다음을 실행 로 구분 일대다 일대일 일대다 동기 1) 요청/응답(Request/response) - 비동기 2) 알림(Notification) 4) 퍼블리시/구독(Publish/subscribe) 3) 요청/비동기 응답(Request/async response) 5) 퍼블리시/비동기 구독(Publish/async responses) 요청/응답 : ..
In-Memory Database 디스크가 아닌 주 메모리에 데이터를 보유하고 있는 데이터베이스 장점 자료 접근 및 처리가 빠름 메모리상에 인덱스를 넣어 필요한 모든 정보를 메모리상의 인덱스를 통해 빠르게 검색 가능 단점 휘발성이기 때문에 꺼지면 데이터들이 삭제됨 속도 때문에 사용하는 것이라 압축을 하지 않음, 이에 따라 RAM 용량이 넉넉하지 않을 경우 가상메모리를 사용하게 되어 역효과가 일어나기도 함 특징 ACID 중 영속성(Durability)를 보장하기 위해 INSERT, UPDATE, DELETE된 값들은 디스크에 로그로 기록 DBMS가 재구동될 때 디스크로부터 로그 파일을 읽어와 메모리에 재구축 가능 💡 ACID : 트랜젝션을 정의하는 4가지 속성 원자성(Automicity) - 트랜잭션에 속..