[활동 정리]/[2024]하계 모각코 개인

[2024 하계 모각코] "화성갈끄니까" [6회차] 계획 및 결과

DevCat_ 2024. 8. 17. 22:14

6회차 목표 : 웹 공부

 

일정 : 7/22

 

6회차 공부 내용 :  개발 기술 스택, 프로젝트 기술 스택 선정

 

 프로젝트를 하게 될 때, 고려할 것들이 있으며 그러한 고려점을 토대로 적절한 기술 스택으로 구현하는 것이 좋다. 물론 자신있는 것으로 구현하면 좋지만 이후에 좋은 개발자가 되기 위해서는 프로젝트의 구현에 필요한 것들을 적재적소로 사용하는 능력이 중요하니 기술 스택에 대해서 공부를 했다.

 

어플리케이션의 배포 및 컴파일, 유용한 API 활용, 하드웨어 연동, 보안 등등의 고려점이 있다.

 

데이터베이스

- 데이터 베이스의 수직적 그리고 수평적 확장

수직적 확장은 기존 기계에 더 많은 성능 자원(CPU, RAM 등)을 추가하여 확장.

수평적 확장은 더 많은 기계를 추가하여 확장하는 것.

 

데이터베이스의 수평적 확장은 종종 데이터 분할에 기반을 둔다. 각 노드는 데이터의 일부만 포함하는 반면에 수직적 확장에서는 데이터가 단일 노드에 상주하고 확장은 멀티 코어를 통해 수행하여 기계의 성능 자원 간에 부하를 분산하게 된다.

 

 현재 수준에서는 프로젝트에서 서버의 확장이 그렇게 중요하지는 않지만 나중을 위해서라도 공부하자면 이전보다 더 많은 요청을 처리할 수 있도록 리소스를 확장하는 것의 필요성이 대두될 수 있다.

 

 여기서 하나의 서버의 리소스를 확장하는 것을 수직적 확장이라고 했었는데, 이것은 일반적으로 비용이 많이 든다. 재시작하여 시스템을 다운시킬 필요성도 있다. 스레드 수는 동일하게 유지되는 수직적 확장에 반해 수평적 확장은 시스템 다운이 필요없이 서버 추가로 해결이 가능하다. 요청을 수평적 확장으로 늘린 서버들이 균등하게 되려면 역방향 프록시 역할을 하는 로드 밸런서를 추가해야한다고 한다.

 

이것도 데이터베이스의 고려점이며, SQL과 NoSQL의 기술 스택 고려점을 확인해보자.

 

 일단 차이점으로 SQL 데이터베이스는 관계형 데이터베이스(RDBMS), NoSQL은 비관계형 데이터베이스이다. SQL의 구조화가 된 쿼리언어를 사용하여 미리 정의된 스키마가 있는 반면, NoSQL은 동적 스키마가 있다.

 

SQL은 데이터베이스의 수직적 확장이 가능한 반면, NoSQL 데이터베이스는 수평적 확장(샤딩 이라고 한다.)이 가능하다.

 

SQL은 테이블 기반, NoSQL은 문서, 키-값, 그래프 또는 와이드 칼럼 스토어.

SQL은 다중 행 트랜잭션에 더 적합한 반면, NoSQL은 JSON 같은 비정형 데이터에 더 적합.

 

SQL은 데이터베이스 시간 때 공부했던 ACID 특성으로 트랜잭션을 지원하고 이 개념 탓에 확장하는 것을 구현하기는 더 어렵다. 물론 NoSQL은 일반적으로 레코드 수준의 원자성을 제공하지만, 일련의 작업(우리가 트랜잭션으로 볼 수 있는 것들)이 성공할 보장이 없다.

 

그러니 둘 중 하나를 고려하게 될 때는,

  • 웹 어플리케이션을 위한 빠르고, 확장 가능한 안정적인 데이터베이스 NoSQL,
  • 복잡한 데이터 쿼리와 트랜잭션 지원이 필요한 경우는 SQL이다. 물론 더 많은 특징을 갖고 있으니 철저한 조사가 필요하다.

 

배포

AWSHeroku

  • AWS는 아마존 웹 서비스로 유연하고 안정적이며 확장 간으하고 사용하기 쉽고 비용 효율적인 클라우드 컴퓨팅 솔루션을 제공하는 플랫폼이다.
  • Heroku는 클라우드 서비스 공급자 웹 어플리케이션의 빠르고 효과적인 구축, 배포 및 확장을 촉진하는 소프트웨어 개발 플랫폼이다.

 

서비스 유형은 Heroku는 PasS, AWS는 IaaS,PaaS,SaaS이다.

가격은 AWS가 조금 더 싼 걸로 기억한다.

 

Heroku는 전문 개발자에게도 너무 단순한 소프트웨어인 반면, AWS는 전문가에게 적합, 초보자에게는 쉽지 않다.

Heoku는 신속한 배포가 가능하지만, AWS는 배포가 어렵다.

 

대개 복잡한 건 AWS, 쉬운 건 Heroku

 

하지만 가격은 AWS가 좋으며, Heroku는 상당량의 트래픽이 있는 프로젝트라면 적합하지 않다.

AWS는 배포가 어려운 반면 DevOps 팀이 인프라 구성 및 관리가 용이하며 높은 컴퓨팅 성능을 제공한다.

 

학생 관점에서!

Heroku는 완성형 서버 플랫폼이니 코드만 주면 알아서 뚝딱해준다. 물론 비싸다. 세부적인 거 수정하기가 어렵다.

AWS는 뼈대만 있을 뿐이니 모든 패키지 설치 연동은 내가 해야하고, 준비 과정이 오래 걸린다. 물론 저렴하다. 세부 수정이 자유롭다.