웹 서비스 사용자/세션 정보 사용자 ID : 보통 웹서비스에서는 등록된 사용자마다 부여하는 유일한 ID이다. 세션 ID : 세션마다 부여되는 ID이다. 세션 : 사용자의 방문을 논리적인 단위로 나눈 것이다. 과거에는 사용자가 로그인 후 로그아웃 하거나, 또는 로그인 세션 정보가 만료되면서 로그아웃 될 때까지를 하나의 세션으로 보기도 했다. 이 방식의 문제점이 생기면서 요즘은 구글 애널리틱스에서 쓰는 세션 정의가 있는데, 그것을 따라 한다. 사용자가 30분이상 쉬지 않고 서비스를 이용하더라도, 사용자가 외부 링크(보통 광고)를 타고 다시 서비스를 방문하면 새로운 세션을 연다. 광고등은 마케팅과도 연관되어 있어서, 다른 의도를 갖고 있다고 보고 새로운 세션을 연다. 사용자가 방문 후 30분간 interact..
Docker MySQL을 다른 OS에서 설치하려면 다양한 변수들이 존재한다. OS 버전, 기존 설치되어 있는 프로그램들과의 의존성 등 보통 소프트웨어를 설치하면 다양한 다른 소프트웨어들의 설치가 동반된다. Docker는 특정 프로그램, 그 프로그램을 실행하는데 필요한 기타 소프트웨어들을 하나의 패키지로 만든다. 패키지를 사용하여 프로그램의 개발과 사용을 도와준다. 패키지를 파일 시스템 형태로 만드는데, 도커 이미지라고 한다. 이 이미지는 공유가 가능하다. 도커 이미지 공유소를 Docker Registry(Docker Hub)라고 부른다. 도커 이미지를 실행시킨 것을 도커 컨테이너라고 부르며, 응용프로그램에 해당한다. 도커는 호스트 운영체제 위에서 작동한다. 따라서 도커 위에서 작동하는 소프트웨어들은 운영..
클라우드 컴퓨팅 자원(하드웨어, 소프트웨어)을 네트워크를 통해 서비스 형태로 제공하는 서비스이다. 자원(서버 등)을 필요한 만큼 거의 실시간으로 할당받아 사용하고, 사용한 만큼 요금을 지불한다. 탄력적으로 필요한 만큼의 자원을 유지하는 것이 중요하다. 클라우드 컴퓨팅이 없었다면? 서버/네트워크/스토리지의 구매 및 설정을 직접 수행해야 한다. 데이터센터를 만들 공간을 직접 확보해야 한다. 데이터센터를 확장할 경우, 공간을 먼저 확보해야 한다. 보통 서버를 구매하고 프로그램을 설치하는데 적어도 두세달은 걸린다. Peak time을 기준으로 용량을 계획해야 한다.(널널한 시간에도 피크타임 기준으로 운영된다) 유휴자원들이 많아지는 현상이 발생한다. 클라우드 컴퓨팅의 장점 초기 투자 비용이 크게 줄어든다. CAP..
DDL CREATE TABLE Primary key 속성 지정을 통해 유일키 보장을 설정할 수 있다. 성능 향상을 위해 인덱스를 지정할 수 있다. CREATE TABLE raw_data.user_session_channel ( user_id int, session_id varchar(32) primary key, channel varchar(32) ); DROP TABLE DROP TABLE 테이블이름; 없는 테이블을 지우려고 하는 경우 에러를 낸다. 따라서 DROP TABLE IF EXISTS table_name; 을 사용할 수 있다. ALTER TABLE 새로운 컬럼 추가 ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입; 기존 컬럼 이름 변경 ALTER TABLE 테이블이름 RE..
SQL (Structured Query Language) DDL (Data Definition Language): 테이블의 구조를 정의한다. DML (Data Manipulation Language): 테이블에서 검색/추가/삭제/갱신을 하는데 사용하는 언어이다. 모든 대용량 데이터 웨어하우스는 SQL기반이다. Redshift, Snowflake, BigQuery, Hive Spark(SparkSQL), Hadoop(Hive): SQL 언어 지원 단점 구조화된 데이터를 다루는데 최적화가 되어있다. 정규표현식을 통해 비구조화된 데이터를 어느 정도 다루는 것은 가능하나 제약이 심하다. 대부분의 관계형 데이터베이스들은 JSON같이 nested형은 지원하지 않는다. BigQuery는 nested structure..
시스템 구성 더보기 (과거) 시스템 구성의 변화: 2tier 보통 데스크탑 응용프로그램에서 사용되는 아키텍쳐 클라이언트 - 서버의 2티어로 구성 비즈니스 로직은 보통 클라이언트에 위치한다. 클라이언트 티어: 사용자가 사용하는 UI, 프론트엔드 서버 티어: 데이터베이스, 백엔드 (현재) 시스템 구성의 변화: 3tier 웹 서비스에서 많이 사용되는 아키텍쳐 프레젠테이션 티어: 프론트엔드 (사용자단) 애플리케이션 티어: 백엔드 (비즈니스 로직) 데이터 티어: 백엔드 (데이터베이스 로직) 관계형 데이터베이스의 중요성 어떤 구조이건 데이터베이스는 꼭 필요한 컴포넌트이다. 데이터베이스를 잘 다루는 것은 좋은 개발자가 되기 위해 필요하며, 기본은 SQL을 잘 아는 것이다. 백엔드 개발자로써 중요한 부분이다. 데이터 ..
서비스를 통해 만들어지는 데이터 저장을 위한 데이터베이스 프로덕션 관계형 데이터베이스 (RDBMS) 웹/앱 서비스 운영에 필요한 관계형 데이터베이스를 지칭한다. 서비스의 운영에 필요한 데이터들을 저장하는 곳이다. OLTP (Online Transaction Processing) 빠른 처리속도가 중요하다. 사양이 낮거나 최적화가 안 되어있다면 속도가 느려질 수 있다. 데이터를 구조화된 테이블들의 집합으로 구성하여 저장하고 관리한다. 관계형 DB의 언어를 SQL이라고 한다. ex) MySQL, PostgreSQL 데이터 분석을 위한 데이터베이스 데이터 웨어하우스 OLAP(Online Analytical Processing) 빠른 처리속도보다 구조화된 큰 데이터를 처리할 수 있는지에 중점을 둔다. 회사 관련 ..
Null Pointer Exception. 아마 자바를 사용하면서 많이 보게 되는 에러중에 하나일 것이다. 자바에서는 거의 모든 것들이 레퍼런스이기 때문에, 거의 모든 것들이 null이 될 가능성이 있다. 따라서 항상 null을 확인할 필요가 있다. (기존에는) //User.java public class User { public static User EMPTY = new USER(0, ""); private int age; private String name; public User(int age, String name) { this.age = age; this.name = name; } } //Main.java public class Main { public static void main(String[..