본문 바로가기

TIL

6/23[TIL] Server의 역할은? 서버라는 이야기를 들으면 제일 먼저 생각나는 장면이 어두컴컴한 방에 엄청 커다란 장비들이 윙윙 소리를 내는 서버실이 제일 생각나는 것 같다. 이 서버라는 것은 어떠한 역할을 하는 것인가? 서버라는 것도 하나의 컴퓨터이다. 서버라는 역할을 하면 서버 컴퓨터로 불린다. 서버용 컴퓨터들이 있는 것처럼... 서버는 네트워크 상의 컴퓨터 중에서 다른 컴퓨터 즉 클라이언트로부터 요구나 지시를 받아 정보나 처리 결과를 되돌리는 역할을 하는 컴퓨터 시스템으로 이러한 컴퓨터 시스템을 클라이언트 서버 시스템이라고 한다. 이는 하나의 응용 프로그램을 상호 협력적인 환경에서 운용하는 분산처리 형태를 의미하며 즉, 서비스를 요청하는 클라이언트와 클라이언트의 요청을 처리하는 서버와의 협동 작업을 통해서 사용자가 원하는 결과를 얻.. 더보기
6/17[TIL] 왜 Database를 사용해야 할까? Data와 정보에 관련한 대화에 있어 개발자 간에 대화에도 Database는 이제는 없어서는 안 될 것으로 자리 잡았다. 대학생 때 Database라는 개념을 처음으로 접했을 시에 Data를 보관하는 대용량 장소이며 스키마, 릴레이션, 관계... 등을 개념적인 측면에서 간단히 훑어보는 식으로 공부했던 기억이 난다. Database는 도대체 왜 사용하는 것일까? 그 당시에는 결론을 단지 Data들을 효과적으로 효율적으로 정리할 수 있고 필요할 때 편리하게 사용할 수 있다(?)라는 수박 겉핥기식으로 생각했던 것 같다. 필자는 Database를 도대체 왜 사용해야 할 것인지에 대한 질문의 답을 기존에 알고 있던 것보다 세세히 정리하여 적어보고자 한다. DB를 사용하기 이전에는 사용하는 data의 크기가 그렇게.. 더보기
6/15[TIL] SQL 과 NoSQL 이란? 프로젝트를 하면서 백엔드 포지션에서 작업을 진행하게 되면 여러 가지 고민에 사로잡히게 되는데 SQL과 NoSQL을 정하는 것 또한 큰 고민 중 하나에 속하는 것 같다. MySQL 같은 MySQL 을 사용할 것인가? 아니면 MongoDB 와 같은 NoSQL을 사용할 것 인가... 필자는 아직 MongoDB 와 같은 NoSQL을 사용해 본 적이 없다. 프로젝트를 진행하면서 MySQL과 Postgresql을 사용해본 게 전부라 MongoDB 와 같은 NoSQL을 사용해본 다른 사람들에게 엄청 편하다는 이야기를 많이 들었다. 스키마에 대해 신경 쓰지 않아도 되고 1:N, M:N과 같은 관계를 지정할 필요 없다는 것까지... 듣고 나서 언젠가 사용해보아야 했다고 생각했는데 아직도 그러지 못하고 있다. 꼭 사용해보.. 더보기
6/9[TIL] ORM 사용의 장점과 단점은? 프로젝트 중 백엔드 부분을 구축하면서 자연스레 ORM이라는 것을 사용해보고 정말 편리했던 기억이 난다. ORM(Object Relational Mapping)이란? DB와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환, 맵핑(연결)하는 프로그래밍 기법이다. 이는 객체(클래스)와 관계(관계형 데이터베이스)와의 설정을 의미하고 객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다. 여기서 객체 모델과 관계형 모델 간의 불일치가 존재하는데 이를 객체 간의 관계를 바탕으로 SQL을 자동생성하여 불일치를 해결 해주는 것이 ORM이다. Object 와 DB의 데이터 사이에서 맵핑(연결)해주는 매개체 역할이라고 보면 될 것 같다. ORM을 사용함에 있어서 생기는 장 / 단점에.. 더보기
6/7[TIL] SQL DB 설계에 있어 중요하게 생각하는 점은 무엇이 있을까? SQL DB 설계에 있어 중요하게 생각하는 점은 무엇이 있을까? 위의 주제의 질문에 대한 답을 필자는 "요구사항에 맞게 꼼꼼하게 검수 한 다음 DB를 설계하는 것"이라는 생각해본다. 한 프로젝트를 진행하게 되면 프로젝트 기획 단계에 정말 많은 시간을 쏟아부어 백엔드 전반의 전체적인 아웃라인을 잡게 되는데 이 부분이 정말 중요한 부분이지만 "이 정도면 됐겠지?"와 같은 안일함으로 기획 단계에 임했다가 프로젝트 도중에 몽땅 뒤엎거나 많은 수정 시간을 필요로 하여 예상 시간이 훨씬 많이 걸렸던 적이 부지기수이다. 이처럼 DB설계를 잘못하게 되면 향후에 유지보수 비용이 엄청나게 들어 갈 수 있고 그렇기에 초기에 설계를 잘해두어야 시간과 비용을 절약할 수 있다. SQL Query도 비슷한 맥락으로 Query 잘못.. 더보기
6/3[TIL] Database Indexing이란 무엇이며 왜 하는가요? Database Indexing이란 무엇이며 왜 하는가요? 이를 알아보기 전에 Index이라는 것을 알아보자. Index란? 추가적인 쓰기 작업과 저장 공간들을 활용해서 DB 테이블의 검색 속도를 향상하기 위한 자료 구조라고 한다. 우리는 두꺼운 책을 읽게 되면 간혹 책의 맨 앞이나 맨 뒤에 색인을 추가하여 보다 원하는 내용을 빠른 시간 내에 찾아볼 수 있다. 우리가 만약 책에서 원하는 내용을 찾을 때 책의 처음부터 끝까지 모든 페이지를 찾아보는 것은 정말 오랜 시간이 걸리게 될 것이다. 그렇기에 색인(index)을 이용한다면 이 문제를 해결할 수 있다. DB에서도 또한 크게 상황이 다르지 않다. Index는 DB 내에서 모든 테이블을 검색하면 시간이 오래 걸리기에 데이터와 데이터의 위치를 포함한 자료구.. 더보기
6/2[TIL] Transaction 이란 무엇이며 언제 사용하는가 Transaction 이란 무엇이며 언제 사용하는가? Transaction 이란? DB의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다고 한다. DB에서 데이터를 다룰 때 장애가 일어난 경우 데이터를 복구하는 작업의 단위가 되기도 하며 DB에서 여러 작업이 동시에 같은 데이터를 다룰 때에 이 작업을 서로 분리하는 단위가 되기도 한다. Transaction의 유의할 점이 있는데 Transaction은 전체가 수행이 되거나 또는 전혀 수행이 되지 않아야 된다고 한다. 그렇다면 DB의 상태를 변화시킨다는 것은 무엇을 의미하는 것일까? 쉽게 말하면 SQL(SELECT, INSERT, DELETE, UPDATE 등)을 사용해서 DB에 접근한다고 보면 된다. 그리고 위에서 언급한 작업의 단위는 단순히 SQL.. 더보기
5/31[TIL] SQL Injection 이란 무엇이며 어떻게 막을 수 있을까요? 우선 SQL Injection이 무엇인지와 이로 인한 사례, 예시들을 보고 이를 어떻게 하면 막을 수 있는지 알아보기로 하자. SQL Injection이란? 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 Code Injection 공격 방법이다. 대부분 클라이언트가 입력한 데이터를 제대로 필터링하지 못하는 경우에 발생하며 공격의 난이도에 비해 피해가 상당하기 때문에 보안 위협 1순위로 불릴 만큼 중요한 기법이다. Injection 공격은 OWASP Top 10 중 제일 상위 1위에 속해 있어 간과할 수 없다. OWASP는 오픈소스 웹 애플리케이션 보안 프로젝트로 주로 웹에 관한 정보노출, 악성 파일 및 스크립트, 보안 취약점 .. 더보기