목록전체 글 (37)
공부한 것 꼭꼭 씹어먹기
요즘 언론에서 Chat gpt 이야기를 많이 합니다. 챗지피티(ChatGPT)는 2022년 12월 말 open AI에서 공개한 대화형 인공지능 서비스인데요. 조만간 구글같은 검색 엔진을 대체할 것이라고 보도되며 챗gpt에 대한 관심이 점점 커지고 있습니다. 오늘은 Chat gpt가 무엇인지, 사용법은 어떻게 되는지 알아보겠습니다. Chat gpt란? Chat gpt는 일종의 챗봇이지만 단순히 미리 입력된 답변만 하는 챗봇이 아닙니다. 정교하고 전문성 있는 답변부터 논리 구조를 갖춘 짜임새 있는 글까지 생산해 낼 수 있습니다. 이뿐만 아니라, 시를 쓰거나 프로그래밍 코드를 짜주고 소설을 부탁하면 소설을 써줍니다. 어떤 글을 주고 그 글에 대한 요약을 부탁하면 순식간에 핵심을 뽑아내기도 하는데요. 또 이전에..
트랜잭션 데이터 베이스에 대해 배울때 필수로 배우는 개념이 있습니다. 바로 '트랜잭션(Transaction)'이라는 용어인데요. 데이터 베이스가 수행하는 여러개의 작업(여러개의 쿼리)를 하나로 묶은 실행 단위라고 정의할 수 있습니다. 데이터베이스에서 트랜잭션은 하나의 작업 단위가 되어 같이 묶인 모든 작업이 모두 완료가 되어야 해당 트랜잭션도 완료되었다고 할 수 있습니다. 즉, 트랜잭션에 묶인 모든 작업이 모두 실패 혹은 모두 성공이 되어야 합니다. ACID 데이터 베이스에 대해 배울때 필수로 배우는 또 다른 개념이 있습니다. ACID라고 불리는 데이터 베이스의 설계 원리인데요. A는 Atomicity 원자성, C는 Consistency 일관성, I는 Isolation 고립성 그리고 D는 Durabili..
데이터 복제에는 두 가지 방법이 있습니다. 데이터 복제 방법 1. 마스터 슬레이브 말그대로 주인과 하인의 관계를 만들어 내는 복제 방법입니다. 우선 데이터가 마스터 서버에 저장이 되고나면 이 데이터들은 슬레이브 서버로 복제됩니다. 읽기 작업은 마스터 서버 뿐 아니라 모든 슬레이브 서버들에서 가능하지만 쓰기 작업은 마스터 서버에서만 가능합니다. 만약 읽기에 대한 request가 증가할 경우 슬레이브 서버를 추가하여 효율적으로 처리할 수 있습니다. 그러나 쓰기 작업의 경우는 마스터 서버에서만 감당하므로, 만약 쓰기에 대한 request가 증가할 경우 성능 저하가 있을 수 있습니다. 따라서 마스터 슬레이브 복제 방법은 쓰기 작업이 많지 않고 읽기 작업이 많은 데이터 세트에 최적화된 방법이라고 할 수 있습니다...
데이터 저장의 기본 개념을 살펴보겠습니다. 외부 데이터는 대체로 직접 처리할 수 있는 상태가 아니기 마련입니다. 데이터를 저장하고 처리해서 사용하려면 데이터 랭글링(data wrangling)을 통해 데이터를 잘 다듬어야 하지요. 즉, 데이터를 여과하고 정제 및 통합하는 과정을 데이터 랭글링이라고 합니다. 처음에는 데이터의 복사본이 원본 형식으로 저장되고, 랭글링이 끝나면 처리된 데이터가 다시 저장되는 것인데요. 빅데이터의 데이터 세트를 원본이나 복사본으로 저장해야 하기 때문에 확장성 좋고 저렴한 저장 솔루션이 필요하게 됩니다. 이러한 저장 기술 관련하여 알아야 할 몇가지 개념들을 정리해 보겠습니다. 클러스터 클러스터(clusters)는 서버(or 노드)들의 모음입니다. 여러대의 컴퓨터들이 하나의 시스템..
웹앱 프로그램은 개발환경이 준비되고 개발 언어를 알면 개발 할 수 있습니다. 비즈니스 로직을 정확히 이해한 상태라면 기능 자체를 개발하는 것은 전체 소프트웨어 개발 과정 중 가장 쉬운 일이라고 할 수 있습니다. 문제는 개발한 프로그램의 기능이 제대로 작동하는지, 최적화가 잘되어서 만족할 만한 성능을 가지고 있는지, 보안에 취약하지는 않은지, 안정적인 운영이 가능한지, 그리고 추후 확장성이 충분한지 등등 검증해야 할 것들이 매우 많다는 것입니다. 이런 검증을 웹앱 프로그램 테스트를 통해 할 수 있습니다. 예전에는 개발이 완료된 후 출시 전에 테스트를 했지만, 요즘은 개발 단계별로 그에 맞는 테스팅 전략을 이용합니다. 마치 공장에서 공정이 하나하나 흘러갈 때마다 품질 테스트를 거쳐서 다음 단계로 나가는 것처..
앱이나 웹 등의 소프트웨어를 개발할 때 사용하는 모니터링 도구를 알아보겠습니다. 모니터링 도구는 프로그램을 다 만든 후에도 사용할 수 있겠지만 테스트 과정에서도 사용할 수 있습니다. 만약 결함이 발생했을때 어디서 그 결함이 발생하였고 원인은 무엇인지 편리하게 찾아볼 수 있기 때문입니다. Application(프로그램) Monitoring 애플리케이션을 모니터링 하는 도구는 APM(Application Performance Monitoring)이라고 합니다. 요청을 처리하는 과정에서 어떤 method를 사용하였는지, 각 method에서 처리에 소요된 시간과 CPU 처리 시간등을 계산해 주고, 1초당 몇 건의 요청을 처리하는지도 계산해 줍니다. 코드 레벨에서의 프로그램 러닝 과정을 모니터링 해준다고 볼 수 ..
요즘은 새로 시작해보는 툴이 갑자기 많아졌습니다. 저는 갑자기 airflow도 다뤄야만 합니다. airflow는 무엇일까요? 에어플로우는 workflow management tool 입니다. 업무흐름을 관리하는 도구라는 뜻이죠. 아래 설명처럼 에어플로우는 프로그래밍 방식으로 워크플로우를 작성하고 스케줄링(예약)하고 관리(모니터링)하는 오픈 소스입니다. Apache Airflow is an open source platform to programmatically author, schedule, and monitor workflows. 간단히 말해서, 코드로 업무를 자동화할 수 있는 툴입니다. 주로 데이터 분야에서 많이 쓰이는 데요, 예를 들면 매일 경쟁사 데이터를 우리 회사의 데이터베이스에 넣어야 한다면?..
파이썬 판다스로 csv파일 읽기 최근에 갑자기 파이썬을 쓸 일이 생겼습니다. pandas라는 파이썬 라이브러리도 함께 말이죠. Python용 pandas 라이브러리는 데이터 형식 지정, 탐색적 데이터 분석 수행, 모델링 및 기계 학습에 사용할 데이터 준비에 매우 유용합니다. 그래서 빅데이터 분석 작업에 가장 많이 쓰이는 라이브러리가 pandas입니다. 빅데이터의 소스 데이터로 많이 쓰이는 csv파일은 가장 일반적인 파일 형식 중 하나로 엑셀 스프레드 시트와 같은데요. 쉼표로 구분된 값을 저장하는 csv파일은 데이터 유형과 같은 것에 대해 걱정할 필요 없이 기본적으로 .csv 파일로 작업할 수 있도록 합니다. Python에서 이러한 csv 파일을 사용하기 위해 pandas 라이브러리는 pd.read_csv..