벌써 1주일 정도가 지났는데 크롤링때문에 스트레스를 많이 받아서 아무것도 한게 없다고 생각했는데 돌이켜보면 이것저것 규칙도 정하고 진행은 되고 있는 듯한 느낌이었다. 1. 크롤링 이제 크롤링에 대한 부분은 다들 어느정도 흐름을 잡았다고 생각한다. 1주일동안 많은 시행착오를 겪었는데 정말 이런 시행착오들을 겪으면서 우리가 잘못하는것이 아닐까 라는 생각도 들곤 했는데 여기저기 질문을 해보고 받았던 답변들을 우리가 종합해보자면 크롤링 자체가 원래 이런것이라는 결론을 내렸다 우리가 질문을 많이해보면서 우리가 했던 방식자체는 틀리지않았다는 것을 알았고 그러면 왜 이렇게 많은 오류와 시행착오를 겪어야하는가에 대해서는 우리가 크롤링 하는 대상이 네이버였는데 네이버에서 어느정도의 제한을 걸어놨는지 알아내기란 어렵고 그..
실전프로젝트 7일차 1. 긴급회의 일단 크롤링 관련해서 진도가 너무 나가질 않았고 (회의할 당시 겨우 1만건의 데이터를 모았다.) 과연 리뷰데이터가 실제로 쓸모가 있는 데이터일까 라는 고민이 들었다. 우리의 계획은 천개 이상의 리뷰가 달린 가게를 추천해주는 것을 생각했는데 리뷰는 10개씩만 되었고 어떤 가게의 리뷰인지는 알 수가 없었다 근데 여기서 문득 드는 생각 우리는 과연 지금 좋은 서비스를 만들기 위함인가 좋은 성능을 내기 위한 프로젝트인가 우리는 사실 프로젝트가 시작되고 초반때도 똑같은 고민을 했지만 결론을 내지 못했다. 결론을 내지 못했던 것은 일단 첫번째 데이터는 유효성이 있는 데이터여야 한다는 말을 들었을때 이 데이터를 실제로 사용하기 위함인것인가 라는 고민을 하게 되면서 서비스인가 성능인가..
위 사진은 서울 어느 곳의 서버실의 풍경을 그림으로 그렸고 그 서버실에 잭슨님 네이마르님 상훈님이 접속해서 데이터를 조회하거나 저장하는 행위를 모습을 보여주고 있다. 근데 만약 직원이 상주할 돈도 부족하고 서버실을 구성할 돈도 없고 심지어 서버 PC를 살 수도 없는 상황이라면 데이터베이스를 구축을 전혀 할 수 없을까? 결론부터 말하자면 아니다 할 수 있다. AWS에서 제공하는 EC2와 RDS를 활용한다면 가능하다. 일단 RDS는 AWS에서 제공하는 관계형 DB의 한종류인데 쉽게 예를 들면 mysql과 같은 RDBMS 즉 관계형 데이터베이스와 같은 종류인데 하나 다른 점이 AWS에서 제공하는 DB라는 것이다. 즉 RDS와 mysql은 같은 기능을 하는 데이터베이스다. 이 RDS를 실행시키기 위해서는 우리가..
우리는 지금까지 로컬에서만의 테스트를 해보았지만 우리가 만든 코드들을 공개하기 위해서는 컴파일을 하고 ( 컴파일러가 기계가 이해할 수 있는 언어로 번역해줌) 빌드를 하고 ( 컴파일된 기계 언어를 gradle을 통해 jar로 포장해줌) 배포를 한다 (사용자들에게 jar를 배포한다) CI / CD라는 개념은 배포단계에서 나오는 말이다. 예를 들어보자면 우리가 배포를 완료하고 나서 사용자의 닉네임을 추가하는 로직을 짜기로 했다. 그렇다면 다시 컴파일을 하고 빌드를 하고 배포를 해야하는데 이것이 빈번하게 이뤄진다면? 배포를하고 나서 에러가 발생해서 코드를 수정하고 다시 컴파일, 빌드, 배포 과정을 거치고 테스트 검증까지 해야하는데 만약 또 다시 문제가 생기면 다시 반복하는 과정.. 이러한 문제들을 해결하기 위해..
데이터베이스에 대해서 공부를 하다보니까 DBMS라는 것이 있는데 RDBMS라는 것도 있고 심지어 RDS라는 것도 있다. 이게 다 뭐지? 싶어서 알아보았다. DBMS (DataBase Management System) 데이터베이스를 관리하는 시스템이다. 사용자와 DB사이에서 사용자의 요구에 따라 데이터를 생성해주고 DB를 관리해주는 소프트웨어이다. DBMS는 데이터를 계층 또는 탐색 형식으로 저장한다. 파일 시스템을 사용해 저장하며 따라서 테이블 간에는 아무런 관계가 없다. 데이터에 대한 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수도 있다. 즉 잘 쓰지 않는다. RDBMS(Relational DataBase Management System) 관계형 모델을 기반으로 ..
key, value 구조의 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템이다. 모든 데이터를 메모리에 저장하고 조회하기때문에 빠르고 지원하는 데이터 형식은 String, Set, Sorted Set, Hash, List 5가지 이다. Redis의 특징 In memory 데이터를 메모리에 저장하고 조회하는 특성때문에 빠르다라는 장점이 있다. 싱글스레드 서버하나에 여러개의 redis server를 띄울 수 있다. (master - slave) 메모리를 활용하면서 영속적으로 데이터를 보존함 Master - Slave란 레디스의 데이터를 실시간에 가깝게 다른 레디스에 복사하는 작업으로 서비스를 제공하던 레디스가 다운 되더라도 데이터를 받은 레디스 노드가 서비스를 계속 할 수 있도록 도와주는 ..
ElasticSearch란 Apache Lucene 기반의 java 오픈 소스 분산 검색 엔진이다. 이 ElasticSearch을 통해 방대한 양의 데이터를 신속하게 저장, 검색, 분석을 수행 할 수 있다. ElasticSearch은 단독으로 사용할수도 있고 Elastic Stack으로도 사용할 수도 있다. Logstash 다양한 소스(DB, csv 파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 Elasticsearch로 전달 Elasticsearch Logstash로부터 받은 데이터를 검색 및 집계하여 필요한 정보를 획득 Kibana Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링 ES에서는 inverted index라는 구조로 데이터를 저장함 7개의 단계가 ..
ElasticSearch에 대해 공부를 하던 도중 RDBMS와 비교가 되는 것을 많이 볼 수가 있는데 왜 비교가 되는걸까? ElasticSearch도 또 하나의 DB 종류인걸까?? 일단 결론부터 말하자면 아니다. ElasticSearch는 하나의 검색엔진일 뿐 데이터베이스를 대체할 순 없다. 그럼 왜 RDBMS랑 비교가 되는걸까? DB구성은 당연히 하게 될 것이고 그렇다면 대중적인 RDBMS로 구성을 했을것이다. 하지만 DB의 크기가 커지면 커질수록 검색성능은 떨어지게 된다. 이러한 경우에 ElasticSearch 도입을 고려하게 되는데 너무 정반대격인 성격과 형태를 가지고 있기 때문에 비교가 되는것이다. 그래서 사실 비교가 아닌 ElasticSearch를 도입함으로써 이점을 가져가느냐 안가느냐의 차이로..