목록전체 글 (85)
개발일지

이름에서부터 알수 있듯이 작은 서비스 여러개가 모여서 하나의 시스템을 제공하는 아키텍처를 뜻합니다. 여러 모듈로 분리가 되어 있어서 팀별로 독립적으로 개발이 가능 서비스가 점점 커질경우 하나의 프로젝트로 함께 묶는것이 점점 버거워지고 복잡해지게 됩니다.이런걸 해결하기 위해서 나온 아키텍쳐 입니다 서비스 운영시 만나게 되는 장애로부터 조금은 자유로워 질 수 있습니다 기존 모놀리식 구조에서는 장애 발생시 서버가 죽게 되면 모든 API가 사용 불가능했지만, 마이크로서비스로 분리하게 되면 어떠한 기능에 장애가 생겨도 해당 API만 사용이 불가능하고, 다른 기능에는 문제없이 서비스를 운영할 수 있게 됩니다. 그럼 과연 모든 서비스에 적용하는 것이 좋을까요? 이러한 마이크로서비스 아키텍쳐를 적용했을 때에는 전체적인..
DNS 웹사이트에 접속 할 때 우리는 외우기 어려운 IP 주소 대신 도메인 이름을 사용한다. DNS(도메인 네임 시스템)이 사람이 읽을 수 있는 도메인 이름(www.naver.com)을 IP 주소로 변환하는 시스템 Load Balancer 이제 유저의 접속량이 늘어날수록 백엔드 서버 컴퓨터가 늘어날 것이기 때문에 백엔드 서버 컴퓨터를 하나로 묶어줄 인스턴스 그룹을 만들어 줄 것입니다. 이때 DNS를 통해 A레코드로 바뀐 채, 백엔드 서버 컴퓨터로 접속하게 되는데 백엔드 서버 컴퓨터 중 특정 컴퓨터에만 바뀐 A레코드가 적용될 수 있습니다. 그렇게 된다면 부하 관리를 위해 늘려준 백엔드 서버 컴퓨터를 추가로 만들어 준 의미가 없게 됩니다. 따라서, DNS와 백엔드 서버 컴퓨터 가운데 로드밸런서를 두고 DNS..
처음에 8베이스 기간을 포함해서 3달 가량을 코딩을 하면서 지냈는데 시간이 벌써 지나가고 팀 프로젝트를 하는 날이 다가오고 있다 내가 열심이 한다고 했는데 정말 잘한건지 모르겠고 잘 못따라간 주차도 있고 힘든 날들이었다 1주차 첫 오프라인 시작으로 처음 만난 사람들과 서먹머석하고 어색한 사이여서 좀 어렵기도 하고 붎편하기도 했다 그러면서 오전에는 알고리즘 수업도 듣고 오후에는 백엔드 수업을 들으면서 그날 그날 과제를 하느라 정신없이 지나갔다 이때는 진짜 팀프로젝트를 할 수 있을까 란 의문을 가지면서 하루하루 지나간거 같다 2주차 사람들끼리 약간의 어색한게 없어지고 1주차와 똑같은 나날을 보냈다 점점 수업내용은 어려워지고 알고리즘도 레벨이 올라가는게 느껴진다 이럴때 일수록 복습하고 이래야 하는데 그날 그날..

TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 합니다. 반복 테스트를 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현합니다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스이며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 ‘Test-First’ 개념에 기반을 둔 단순한 설계를 중요시합니다. eXtream Programming(XP)란 미래에 대한 예측을 최대한 하지 않고 지속적으로 프로토타입을 완성하는 애자일 기방법론 중 하나입니다. 이 기법을 개발했거나 ‘재발견’한 것으로 인정되는 Kent Beck은 2003년 TDD가 단순한 설계를 장려하고 자신감을 불어넣어 준다고..

Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. 여기서 캐시 시스템이란게 어떤 건지 잘 몰라서 찾아봤다 Cache란 나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스해 주는 것을 의미한다. 즉, 미리 결과를 저장하고 나중에 요청이 오면 그 요청에 대해서 DB 또는 API를 참조하지 않고 Cache를 접근하여 요청을 처리하는 기법이다. 이러한 cache가 나온 배경에는 파레토 법칙이 있다. 파레토 법칙이란 80%의 결과는 20%의 원인으로 인해 발생한다는 뜻이다. 즉, 캐시는 모든 결과를 캐싱할 필요가 없으며 서비스를 할 때 많이 사용되는 20%만 캐싱함으로써 전체적으로 효율을 끌어올릴 수 있다. ..

Transaction Transaction은 처리되는 작업의 단위로, 데이터베이스에서의 Transaction 처리는 Business Logic 상 굉장히 중요한 기능입니다. 따라서, 서로 다른 트랜잭션들을 처리하는 도중 하나의 단위 트랜잭션에서 에러가 발생한다면 이전에 성공했던 트랜잭션들을 다시 rollback 시켜 데이터의 Consistency가 깨지지 않도록 해주는 것입니다. 모두 성공했을 경우에는 commit을 통해 확정 지어주게 됩니다. 하나의 일련의 과정이 중간에 오류가 생기면 그부분도 데이터네 같이 저장되거나 그부분만 빼고 데이터에 저장되는 일이 벌어지는데 이런걸 데이터가 오염되었다고 말한다. 이런 현상을 방지하기 위해서 ACID Transaction 을 사용해준다 DB의 Transaction..
이미지 업로드 프로세서의 이해 이미지 기본적인 프로세서 브라우저에서 사용자가 업로드할 이미지 파일을 선택합니다. 브라우저에서 선택된 파일을 변수에 저장합니다. 변수에 담긴 내용을 파일 객체라고 하며 파일 사이즈 등 파일에 대한 정보를 담고 있습니다. 이제 브라우저에서는 파일 객체를 백엔드 서버에 업로드 요청을 합니다. 이를 위해 백엔드 서버에서는 파일 업로드를 하는 API를 제작해 놓아야 합니다. 백엔드 서버에서는 API를 통해 받은 파일을 DB에 저장 시 BLOB타입으로 저장하게 됩니다. 하지만 파일은 큰 용량을 차지하기 때문에 모든 파일을 DB에 저장하는 것은 비효율적입니다. 그럼 이미지 파일을 어디에 저장할까? Srorage service 를 이용해서 저장 하게 된다 이런 서비스를 제공하는 회사가 ..

Payment 결제 결제 프로세스 과정 1. 구매자가 상품에 대한 정보와 금액을 판매자에게 전달 2. 판매자는 전달받은 금액을 PG사에게 결제해줄 것을 요청 3. PG사는 요청 받은 정보를 은행사에게 다시 결제 요청 4. 은행사는 요청받은 금액을 구매자의 계좌에서 출금 후 PG사로 전달 5. PG사는 판매자에게 금액을 전달 (일정량의 수수료 제외) 6. 판매자는 금액확인 후, 구매자에게 상품을 배송 PG Payment Gateway 의 줄임말로, 구매자와 판매자 사이에서의 이뤄지는 결제를 안전하게 할 수 있도록 대행해주는 역할을 담당합니다. 대표적인 PG사로는 KG 이니시스, NHN, KCP, LGU+ 등이 있으며, 모바일 환경으로는 KG 모빌리언스, 다날, 카카오Pay 등이 있습니다. Iamport 원..