저렴한 비용으로 웹서비스 구축하는 방법

개인프로젝트 2024. 12. 23. 09:51

웹서비스를 최소한의 비용으로 구축하려면 비용 절감을 위한 효율적인 선택과 오픈소스 도구 활용이 중요합니다.

각 항목별로 저렴하게 설정하는 방법입니다.

1. 도메인

  • 무료 도메인:
    • Freenom에서 무료 도메인(예: .tk, .ml, .ga)을 사용.
  • 저렴한 유료 도메인:
    • 도메인 등록 업체(예: Namecheap, Google Domains)에서 프로모션을 통해 .com 도메인을 $5~$10/년 정도로 구매 가능.

2. 서버

  • 무료/저비용 클라우드 서비스:
    • AWS Free Tier: 1년 동안 t2.micro(1 vCPU, 1GB RAM) 무료 제공.
    • Google Cloud Free Tier: f1-micro 인스턴스(매월 30GB HDD 포함) 무료.
    • Azure Free Account: 12개월 동안 특정 리소스 무료.
    • Oracle Cloud Free Tier: 항상 무료인 Arm 기반 VM 2개 제공.
  • 저비용 VPS:
    • DigitalOcean, Linode, Vultr 등에서 $5/월부터 시작하는 저렴한 VPS 제공.
  • 자체 서버 호스팅:
    • Raspberry Pi 등 저전력 장치를 사용하여 집에서 서버를 운영. (단, 인터넷 업타임과 보안 관리 필요)

3. 데이터베이스(DB)

  • 오픈소스 데이터베이스:
    • MySQL/MariaDB, PostgreSQL 등 무료로 사용 가능.
  • 클라우드 관리형 DB:
    • Google Cloud, AWS에서 제공하는 무료 DB 서비스.
  • 로컬 설치:
    • 서버에 직접 MySQL/MariaDB를 설치하여 운영.
  • SQLite:
    • 소규모 웹서비스에서는 간단히 SQLite로 시작 가능(파일 기반).

4. 웹 서버

  • 무료 웹서버 소프트웨어:
    • Nginx: 경량화된 고성능 웹 서버.
    • Apache: 안정적이고 널리 사용되는 웹 서버.
  • HTTPS 인증서:

5. 애플리케이션 개발 환경

  • 언어 및 프레임워크:
    • Python: Flask, Django.
    • JavaScript: Node.js, Express.
    • PHP: Laravel, CodeIgniter.
  • 무료 개발 도구:
    • Visual Studio Code, GitHub.

6. 배포 및 버전 관리

  • 무료 Git 리포지토리:
    • GitHub, GitLab, Bitbucket.
  • CI/CD 도구:
    • GitHub Actions, GitLab CI/CD 등 무료로 제공.

7. 운영비 절감 팁

  1. 자동화:
    • Ansible, Docker 등으로 서버 설정 자동화.
  2. 스케일 아웃 전략:
    • 초기에는 최소 리소스 사용, 트래픽 증가 시 추가 리소스 할당.
  3. 정적 웹사이트로 시작:
    • 간단한 웹사이트는 Netlify, Vercel 같은 무료 정적 사이트 호스팅 플랫폼 활용.
  4. 모니터링 도구:
    • 무료로 제공되는 Grafana, Prometheus, UptimeRobot 사용.

예상 초기 비용 예시

항목 비용(월)

도메인 $1~$10/년
서버 무료(AWS 등) 또는 $5~$10
데이터베이스 무료(MySQL)
HTTPS 인증서 무료(Let's Encrypt)
총계 $5~$15

 

위 방법들을 활용하면 초기 비용을 $5~$15 수준으로 유지하면서도 안정적인 웹 서비스를 구축할 수 있습니다.

추가적으로 클라우드 프로모션을 적극 활용해 비용을 절감할 수 있습니다.

:

경력직 기술 면접 예상 질문 - 1

기술 면접 2024. 10. 29. 09:51

1. Spring Boot (스프링) 란?

 

- Java 기반 애플리케이션 개발을 지원하는 오픈소스 프레임워크

 

 

스프링의 특징

 

- 의존성 주입 가능

 

- 웹 프로그램을 개발하기 용이한 MVC(Model-View-Controller) 아키텍처를 지원

 

MVC 패턴

 

- Model : 데이터를 저장하는 부분 (Xml 단 - DB)

 

- Controller : Model을 통해서 데이터를 가져오고 그 정보를 View에 전달 (Java단), 실질적 동작을 하는 부분

 

- View : 시각적인 표현을 담당 (Jsp 단)

 

 

2. Spring Boot (스프링 부트) 란?

 

- 스프링 부트는 스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크

 

- 스프링 부트를 사용하면 기존에 어려운 초기 설정에 쏟아야 했을 시간과 노력을 절약하여 비즈니스 로직을 구현하는데에 집중할 수 있습니다.

 

 

스프링과 스프링 부트의 차이점

 

- 내장 서버 지원 (톰캣 등)

 

- 의존성 관리 간소화

  스프링 부트는 여러 3rd party 라이브러리를 사용할 때, 발생하는 라이브러리 버전 충돌로 인한 문제를 해결하기 위해서,    이미 테스트된 여러 라이브러리들의 묶음 패키지를 제공합니다.

 

- 간편한 설정

 

 

3. Git / GitHub 란?

 

- Git : 버전관리 소프트웨어.

 

- GitHub : Git 프로젝트를 관리하는 호스팅 사이트

 

 

4. Spring Batch 란?

 

- 스프링 배치는 대량의 데이터 처리 작업을 효율적으로 수행하기 위한 스프링 프레임워크의 하위 프로젝트.

 

- 배치 처리란 한정된 데이터를 일괄적으로 처리하는 작업을 의미

  즉, 데이터베이스의 데이터 이관, 대량의 로그 파일 처리, 대용량 데이터의 분석 및 보고 등 다양한 분야에서 활용

 

- 재사용 가능한 기능 제공

 

 

5. Spring Batch 구성요소

 

- Job

스프링 배치의 여러 가지 처리과정을 하나의 단위로 만들어 놓은 가장 큰 실행 단위이다. 하나의 Job은 여러 개의 Step으로 이루어지며, 이 Step들을 순차적으로 실행한다.

 

- Step

Job의 실행 단계를 나타내는 것으로, Tasklet 또는 Chunk 지향 처리 방식으로 구성되어 있다.

 

- Tasklet

Step에서 실행되는 최소 실행 단위이다. 스프링에서 제공하는 Tasklet 인터페이스를 구현하여 실행시킬 수 있다.

Tasklet이 실행되면 Job의 다음 Step으로 넘어가게 된다.

'기술 면접' 카테고리의 다른 글

기술 면접 예상 질문 - 3  (0) 2020.11.10
기술 면접 예상 질문 - 2  (0) 2020.11.10
기술 면접 예상 질문 - 1  (0) 2020.11.10
:

스프링 강의 공부중 1. (springbatch jpa, txt, csv, fixed, json)

Back-End/Spring 2024. 10. 1. 12:18

00:00 스프링 배치

01:31 배치 개발 환경 구성

06:55 Tasklet 배치

27:36 DB Reader/Writer with JPA <-- 시청

51:17 Text File Reader/Writer

1:09:28 CSV Reader/Writer

1:32:35 Fixed Length Reader/Writer

1:37:36 Json Reader/Writer

 

 

 

 

출처 : https://youtu.be/wy99cPHlMlA?si=1NCgxIzH1LseFuCo

 

:

PostgreSQL 버전 업그레이드시 주의점

Back-End/Data Base 2023. 8. 19. 18:21

PostgreSQL 버전 업그레이드는 데이터베이스 시스템의 안정성과 성능을 향상시키는 중요한 작업입니다. 

그러나 업그레이드 과정에서 데이터 손실이나 시스템 장애를 방지하기 위해 몇 가지 주의 사항을 염두에 두어야 합니다. 

아래는 PostgreSQL 버전 업그레이드시 주의해야 할 사항들입니다.

백업: 업그레이드 전에 모든 데이터베이스를 백업해야 합니다. 데이터베이스가 손상되거나 문제가 발생해도 백업을 

통해 데이터 복구가 가능합니다.

문서 확인: 새 버전의 PostgreSQL 릴리스 노트와 문서를 정확하게 확인하고, 어떤 변경 사항이 있는지,

어떤 새로운 기능이 도입되었는지를 파악해서 적용할 부분에 적용을 해야 합니다.

테스트 환경 구축: 실제 운영 환경에 직접 업그레이드하기 전에 테스트 환경을 구축하고 업그레이드 과정을 

테스트하세요. 데이터베이스의 동작과 성능을 확인하여 잠재적인 문제를 발견할 수 있습니다.

하위 호환성 확인: 새 버전과 기존 버전 간의 하위 호환성을 확인하세요. 

특히 애플리케이션 코드와의 호환성을 검토하여 새 버전에서 예상치 못한 문제가 발생하지 않도록 조심하세요.

확장 기능 업그레이드: PostgreSQL의 확장 기능들도 업그레이드가 필요할 수 있습니다. 

각 확장 기능에 대한 문서를 참조하여 업그레이드 과정을 따라가세요.

성능 테스트: 업그레이드 이후에 시스템의 성능을 모니터링하고 문제가 발생하지 않는지 확인하세요.

시간 계획: 업그레이드는 시간이 걸릴 수 있습니다. 적절한 시간을 선택하여 업그레이드를 수행하세요. 시스템 부하가 적은 시간대를 고려하는 것이 좋습니다.

지원 및 커뮤니티 참조: 업그레이드 과정에서 문제가 발생하면 PostgreSQL 커뮤니티와 관련 지원 자료를 

참조하십시오. 경험 있는 개발자나 DBA에게 도움을 요청하는 것도 좋은 방법입니다.

 

:

PostgreSQL과 오라클의 차이점

Back-End/Data Base 2023. 8. 17. 18:11

1. 라이선스 및 비용: PostgreSQL은 오픈 소스 프로젝트로, 무료로 사용하고 수정할 수 있습니다.
오라클은 상용 제품으로 라이선스 비용이 발생하며, 큰 기업에게는 상당한 비용 부담이 될 수 있습니다.

 

2. 라이선스 모델: PostgreSQL은 PostgreSQL 라이선스를 따르며, 오픈 소스 커뮤니티의 협력을 통해 개발되고

유지보수됩니다. 오라클은 프로프리어터리(상용) 라이선스를 따르며, 오라클 공식에서 개발 및 지원됩니다.

 

3. 기능 및 확장성: 오라클은 대규모 엔터프라이즈 환경에서 사용하기 위해 많은 기능과 확장성을 제공합니다.

복잡한 트랜잭션 처리, 병렬 처리, 클러스터링 등을 지원합니다.
PostgreSQL도 많은 기능과 확장성을 제공하지만, 몇몇 엔터프라이즈 기능은 오라클에 비해 제한적일 수 있습니다.

 

4. SQL 호환성: 둘 다 SQL 표준을 따르지만, 오라클과 PostgreSQL 간에는 특정 SQL 문법 및 기능에서

차이가 있을 수 있습니다.

 

5. 설치 및 관리: PostgreSQL은 일반적으로 설치 및 관리가 상대적으로 쉽고 간단합니다.
오라클은 설정 및 관리에 일부 복잡한 과정이 필요할 수 있습니다.

 

6. 용도와 적합성: PostgreSQL은 중소규모부터 대규모까지 다양한 규모의 프로젝트에 적합하며, 특히 중소기업이나

개발자 커뮤니티에서 널리 사용됩니다.
오라클은 대규모 엔터프라이즈 환경에서 주로 사용되며, 고성능, 고가용성, 보안 등에 중점을 둡니다.

 

7. 성능: 오라클은 대량 데이터 처리와 고성능 환경에 최적화된 기능을 제공하므로, 대규모 트랜잭션 처리나

데이터 분석에 강점을 가질 수 있습니다.
PostgreSQL도 높은 성능을 제공하지만, 오라클의 성능과 비교할 때 환경 및 사용 사례에 따라 성능 차이가

발생할 수 있습니다.

:

PostgreSQL 12버전과 13버전의 차이

Back-End/Data Base 2023. 8. 16. 18:03
  1. 성능 개선 및 최적화 :
    • PostgreSQL 13은 성능을 향상시키는 몇 가지 최적화를 포함합니다. 더 나은 쿼리 실행 계획 생성, 쿼리 실행의 개선, 쿼리 최적화 관련 몇 가지 업데이트가 포함됩니다.
  2. B-Tree 성능 향상 :
    • PostgreSQL 13에서는 B-Tree의 성능을 향상시키는 몇 가지 개선 사항이 있습니다. 특히, 범위 조건을 사용하여 쿼리의 성능이 개선되었습니다.
  3. 승격된 범위만 (UPGRADED RANGE TYPES) ​​:
    • PostgreSQL 13은 범위 데이터 유형의 개선된 변수를 도입하여 더 가능성 있는 범위 조작 및 쿼리를 지원합니다.
  4. pg_stat_statements 개선 :
    • 실행 통계를 수집하는 pg_stat_statements 모듈은 PostgreSQL 13에서도 개선되었습니다. 상대적으로 쿼리 성능이 더 실제적으로 실행됩니다.
  5. 저작권 공지 추가 :
    • PostgreSQL 13에서는 데이터베이스 서버의 메시지에 대해 공지가 포함되도록 변경되었습니다.
  6. pg_dump 및 pg_restore 개선 :
    • 백업 및 복원 도구인 pg_dump와 pg_restore는 PostgreSQL 13에서도 다양한 개선이 이루어졌습니다. 백업 및 복원이 더 많이 진행됩니다.
  7. BRIN 처리 성능 향상 :
    • PostgreSQL 13에서는 범위를 데이터로 만든 블록 레인지(BRIN)의 성능이 향상되었습니다.
  8. 기타 기능 개선 및 보안 업데이트 :
    • PostgreSQL 13은 여러 가지 기능 개선 및 보안 업데이트도 포함합니다. 예를 들어, 보안 관련 패치 및 충전이 됩니다.
:

PostgreSQL 11버전과 12버전의 차이

Back-End/Data Base 2023. 8. 15. 16:57
  1. 성능 개선 및 최적화 :
    • PostgreSQL 12는 성능을 향상시키는 몇 가지 중요한 최적화를 포함했습니다. 예를 들어, 보다 효율적인 저전력 실행 계획 생성, 저감 쿼리 실행의 개선 등이 있습니다.
  2. 복구 기능 개선 :
    • PostgreSQL 12는 B-tree 연금의 성능과 관련된 여러 가지 개선을 가져왔습니다. 쿼리 스캔 및 쿼리 성능 개선을 위한 현행 관련 개선 사항이 있습니다.
  3. JSON 기능 강화 :
    • PostgreSQL 12에서는 JSON 데이터 처리에 대한 여러 가지 개선 사항이 추가되었습니다. JSON 복구를 사용한 데이터 추출 및 조작이 개선되었습니다.
  4. 복제 ID :
    • PostgreSQL 12에서는 REPLICA IDENTITY 옵션이 도입되어 논리적 복제에서 업데이트된 행을 레플리카로 보내는 방법을 더 일반적으로 제어할 수 있게 되었습니다.
  5. 연결 제한 :
    • PostgreSQL 12에서는 호스트 당 최대 연결 수를 미리 정의할 수 있는 기능이 추가되어 연결 수를 관리하는 데 도움을 줍니다.
  6. CUBE, ROLLUP 및 GROUPING SETS 확장 :
    • 데이터 큐브 및 등록을 지원하는 쿼리에 대한 GROUP BY Ch의 기능이 확장되었습니다. GROUPING SETS를 사용하여 다양한 수준을 한 번에 생성할 수 있습니다.
  7. pg_stat_statements 확장 :
    • pg_stat_statements 모듈은 모니터의 실행 통계를 저장하고 분석하는 데 도움을 주는데, PostgreSQL 12에서는 이 모듈이 개선되었습니다.
  8. PL/SQL 확장 :
    • PostgreSQL 12에서는 PL/SQL과 유사한 기능을 제공하는 PL/pgSQL 언어의 몇 가지 새로운 기능이 추가되었습니다.
  9. 검색 기능 개선 :
    • PostgreSQL 12는 전체 텍스트 검색 엔진 pg_trgm과 관련된 여러 가지 개선을 포함했습니다.
  10. 보안 및 내구성 강화 :
    • 새로운 버전은 보안 패치 및 버클 수정을 포함하여 데이터베이스 시스템의 안정성을 강화하는 데에도 도움이 됩니다.
:

오라클 -> MySQL SQL 마이그레이션

Back-End/Data Base 2022. 11. 29. 22:30

1. 일부 매칭되는 문법 정리

오라클 My SQL
VARCHAR2 VARCHAR
NUMBER INT
DATE DATETIME
SYSDATE CURRENT_TIMESTAMP

 

2. 시퀀스 생성

 

오라클에서는 시퀀스를 지원하지만, MySQL에서는 시퀀스 기능이 별도로 존재하지 않기때문에, 다음과 같이 사용합니다.

 

ㄱ. 시퀀스를 사용할 테이블 생성

CREATE table SPRING.SEQUENCES
(
NAME VARCHAR(32)

 

, CURRVAL BIGINT UNSIGNED
)
 

ㄴ. 시퀀스를 생성 할 프로시저 생성

create procedure SPRING.create_sequence (in the_name text)
modifies sql data
deterministic
begin
delete from SEQUENCES where name = the_name;
insert into SEQUENCES values(the_name, 0);
end;

 

ㄷ. 생성 한 시퀀스의 다음 값을 가져오는 함수 생성

create function SPRING.nextval (the_name varchar(32))
returns bigint unsigned
modifies sql data
deterministic
begin
declare ret bigint unsigned;
update SPRING.SEQUENCES set currval = currval + 1 where name = the_name;
select currval into ret from SPRING.SEQUENCES where name = the_name limit 1;
return ret;
end

 

ㄹ. 만들어야할 시퀀스를 시퀀스 테이블에 생성

 

call SPRING.create_sequence('ADMIN_BNO');

 

 

ㅁ. Insert 문에서 시퀀스 사용 예시

 

SPRING.nextval('ADMIN_BNO') FROM DUAL 등을 사용해서 시퀀스를 사용

: