TIL72 MSA란 무엇일까 MSA 란 무엇인가1. 모놀리틱 시스템모놀리틱 시스템이란 소프트웨어 애프리케이션을 하나의 단일한 독립 시스템으로 구축하는 소프트웨어 아키텍처 스타일을 말한다.하나의 애플리케이션에 모든 비즈니스 로직을 통째로 모아놓은 구조로, 소규모 프로젝트에 적합하고, 개발/빌드/배포/테스트가 용이하며 인프라 구조가 단순하여 운영 비용 부담이 적다는 장점이 있다.하나의 단일 애플리케이션으로 동작하므로 작은 프로젝트일 때는 관리나 개발이 편하지만 기업의 시스템 규모가 커지고 복잡해지면 다음과 같은 단점이 부각되기 시작한다.* 작은 수정사항에도 전체 빌드 및 배포가 이루어져야 한다. -> 시간이 오래걸린다.* 많은 양의 코드가 몰려있어 유지보수가 어렵다.* 일부 오류가 전체 시스템에 영향을 미친다.* 스케일 아웃 설정이 복.. 2024. 5. 24. Flask 와 RESTful API 1.RESTful API 1.1 RESETful API 란? 대부분의 비즈니스 애플리케이션은 다양한 작업을 수행하기 위해 다른 내부 애플리케이션, 서드 파티 애플리케이션과 통신해야 한다. RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스이다. REST는 Roy Fielding이 정의한 네트워크 통신을 위한 소프트웨어 아키텍처이다. 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌고, REST기반 아키텍처를 사용해서 대규모의 고성능 통신을 안정적으로 지원할 수 있게 되었다. 다음은 REST 아키텍처의 주요 특징 및 원칙이다. 자원(Resource) : 모든것을 자원으로 표현한다. 표현(Representation) : 자.. 2024. 3. 2. 내가 정리한 Git 사용법 1.GitHub git status // 현상태 확인하기 git의 여러 스테이지 Working Directory -> Staging Area -> Local Repository -> Remote Repository Working Directory 작업디렉토리 Staging Area 스테이징 영역 변경된 파일의 스냅샷을 저장. git add를 사용해서 작업디렉토리에서 옮김 Local Repository 로컬저장소 커밋된 버전의 스냅샷을 저장. git commit을 사용해서 스테이징에서 옮김 Remote Repository 원격저장소 협업자들 간 코드를 공유하고 저장하는 공간 제일중요!!! git push로 local -> remote git pull로 local 2024. 3. 2. DynamoDB란 무엇인가 1.DynamoDB 기초 DynamoDB에서는 테이블을 생성할 때 모든 attribute에 대한 스키마를 미리 정의해 둘 필요가 없다. 오직 Primary Key(PK)에 대한 스키마만 테이블을 생성할 때 정의하면 된다. PK에는 단일 PK(simple key)와 복합 PK(composite key) 두가지 종류가 있다. 단이 PK는 하나의 attribute만을 primary key로 사용하고, 복합 PK는 두개의 attribute를 결합해서 사용한다. 복합 PK에서 첫번째 attribute는 partition key, 두번째 attribute는 sort key라고 부른다. (attrbute는 RDB의 column과 유사하다) Primary Key(PK) 단일 PK (Simple Key) 단일 attri.. 2024. 3. 2. FastAPI 에서의 테스트코드 '신의 말씀' : 백엔드, 혹은 소프트웨어 개발시 테스트 코드가 무엇인지 조금 알아보기 테스트에는 unit test , end to end test 등의 여러가지 테스트 종류도 존재합니다. 우리 백엔드 테스트 코드는 unit test 기반으로 하게 될 것이구요. 파이썬에서의 테스트코드 프레임워크인 pytest에 대해서 조금 알아보시고! fastapi 에서의 테스트코드 짜는것도 한번 알아보시면 좋겠습니다. 1. 테스트 코드란? 테스트 코드는 소프트웨어 품질을 향상시키기 위해 사용되는 코드이다. 개발자들은 주로 자신이 작성한 코드가 의도한 대로 동작하는지 확인하고, 코드 변경이나 개선 작업을 수행할 때 이전 기능들이 영향을 받지 않도록 보장하기 위해 테스트 코드를 작성한다. 테스트 코드를 작성하면 코드의 안.. 2024. 3. 2. Reverse Proxy란 무엇인가? 1. Reverse Proxy란 무엇인가? Reverse Proxy는 클라이언트와 서버 간의 통신을 중계하는 서버이다. 클라이언트는 리버스 프록시를 통해 서버에 대한 요청을 보내며, 리버스 프록시는 이 요청을 받아서 백엔드 서버로 전달하고 응답을 클라이언트에게 반환한다. 이 과정에서 리버스 프록시는 클라이언트로부터 받은 요청을 수정하거나 필터링하여 백엔드 서버에 전달한다. 리버스 프록시는 여러 목적으로 사용되며, 주요 기능은 다음과 같다. 로드 밸런싱 (Load Balancing) 리버스 프록시는 클라이언트로부터 받은 요청을 여러 백엔드 서버로 분산시켜 부하를 균등하게 분배한다. 이를 통해 서버의 성능을 향상시키고 가용성을 높일 수 있다. SSL 암호화 및 해독 (SSL Termination) 클라이언트.. 2024. 3. 2. Logging 이란? ( @ FastAPI ) 1. logging 이란? 로깅은 현재 우리 프로그램이 어떤 상태를 가지고 있는지, 외부 출력을 하게 만들어서 프로그램의 동작을 이해하고, 문제 발생 시 진단과 해결에 도움을 얻기 위해 추가하는 기능이다. 로깅을 사용하는 이유 디버깅 및 문제 해결 성능 모니터링 : 성능에 관한 정보를 제공, 성능 병목현상이나 최적화 필요 부분을 식별 가능 보안 : 보안 이벤트를 기록하여 시스템에 대한 불법적 접근, 공격 감지 가능 오디팅 : 특정 이벤트나 행동에 대한 기록을 제공하여 나중에 검토, 증명 가능 로깅의 레벨 로깅은 다양한 레벨이 있다. DEBUG : 디버깅 목적의 상세한 정보 기록 INFO : 정보성 메시지 기록 WARNING : 잠재적 문제를 나타내는 경고 기록 ERROR : 심각한 문제 발생 기록 (프로.. 2024. 3. 2. Load Balancer란 무엇인가? 1. Load Balancer란 무엇인가? 로드 밸런서는 네트워크 트래픽이 여러 대의 서버에 균등하게 분산되도록 하는 장치나 서비스를 말한다. 로드 밸런서는 웹사이트, 애플리케이션 서버, DB 서버 등 여러 서버에 들어오는 요청을 관리하여 서버 부하를 분산시키고 가용성과 신뢰성을 향상시킨다. 로드 밸런서의 주요 목적은 다음과 같다. 부하 분산(Load Distribution) 여러대의 서버에 들어오는 트래픽을 균등하게 분산하여 각 서버에 동등한 부하를 유지한다. 가용성 향상(High Availability) 하나 이상의 서버가 고장나거나 유지 보수 중일 때, 다른 서버가 요청을 처리하여 시스템의 가용성을 유지한다. 응답시간 최적화(Optimizing Response Time) 로드 밸런서는 각 서버의 현.. 2024. 3. 2. Docker 도커란 무엇인가? 1. Docker 란 무엇인가? 도커는 컨테이너 기술을 기반으로 동작하는 가상화 플랫폼이다. 가상화란 물리적 자원인 하드웨어를 효율적으로 활용하기 위해서 하드웨어 공간 위에 가상의 머신을 만드는 기술이고, 컨테이너란 컨테이너가 실행되고 있는 호스트 os의 기능을 그대로 사용하면서 프로세스를 격리해 독립된 환경을 만드는 기술을 뜻한다. 다시말해, 도커는 '독립된 환경을 만들어서 하드웨어를 효율적으로 활용하는 기술'이라고 할 수 있다. 가상화 가상화는 하나의 하드웨어를 여러개의 가상 머신으로 분할해 효율적으로 사용할 수 있는 기술이다. 분할 된 가상머신들은 각각 독립적인 환경으로 구동되는데, 베이스가 되는 기존의 환경을 Host OS, 가상 머신으로 분할된 각각의 환경을 Guest OS라고 부른다. 가상머신.. 2024. 3. 2. HTTP란 무엇인가? 1.HTTP란? HTTP란 무엇인가? HTTP는 Hyper Text Transfer Protocol의 줄임말로, 인터넷 데이터 통신규약이다. 인터넷 상에서 주고받는 데이터의 형식을 규칙으로 정함으로써 서로 다른 사람과 조직이 만든 프로그램이 인터넷을 통해 데이터를 주고 받을 수 있다. 컴퓨터는 네트워킹에서 TCP/IP 프로토콜을 이용한다. 이것을 기반으로 동작하는 응용 프로토콜에는 다음과 같은 프로토콜이 있다. FTP(파일전송) SMTP,POP3,IMAP(이메일, 웹메일) HTTP(인터넷데이터통신) HTTP는 이중 가장 널리 이용되며, 웹 브라우징 및 웹 애플리케이션과 관련된 데이터(HTML과 다양한 멀티미디어 자원)을 송수신 하는데 사용된다. 2.HTTP의 동작 HTTP는 어떻게 동작하는가? HTTP는.. 2024. 3. 2. AWS 기초지식 (DynamoDB, EC2, VPC, Lambda) 1.AWS AWS(Amazon Web Services)는 아마존닷컴에서 개발한 클라우드 컴퓨팅 플랫폼이다. AWS는 클라우드 네트워킹 서비스를 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스를 제공한다. 1.1 클라우드 컴퓨팅이란? 기존의 물리적인 형태의 실물 컴퓨팅 리소스를 네트워크 기반 서비스 형태로 제공하는 것. 네트워크 기반으로 제공되기 때문에 사용자는 네트워크 상에서 클라우드 서비스의 자원을 이용할 수 있다. 클라우드 컴퓨팅 서비스는 크게 세가지로 나눌 수 있다. IaaS ( Infrastructure as a Service ) PaaS ( Platform as a Service ) SaaS ( Software as a Service ) IaaS는 AWS, 네이버플랫폼과 같은.. 2024. 3. 2. GitHub Actions, CI/CD 란? GitHub Actions 란? Runner MarketPlace Actions Secrets GitHub Actions 작업 단위 GitHub Actions 란? github actions는 깃허브가 제공하는 CI(지속적 통합), CD(지속적 배포) 서비스이다. 개발 프로세스 자동화 소스코드 변경테스트/빌드/배포까지 자동으로 수행 Runner Workflow는 Github에서 호스팅하는 가상환경인 Runner에서 실행된다. Runner는 Workflow에서 정의된 작업을 수행하는 데 사용되는 가상머신 또는 컨테이너이다. 가상환경에서 workflow가 실행되기 때문에 다양한 스크립트 명령어를 통해 환경을 제어할 수 있다. Marketplace Actions GitHub Actions Marketplace.. 2024. 3. 2. 이전 1 ··· 3 4 5 6 다음