분류 전체보기 210

23.07.24 클론 코딩(오늘의집) - 트랜잭션(Transaction) 적용

프로젝트를 하면서 기존처럼 하나의 DB만을 접근하는 게 아니라 연관된 DB도 같이 접근해서 데이터를 생성하는 작업이 있었다. 이때 에러가 발생하였고 그 원인을 찾으니 연관된 DB에 필요한 값이나 로직이 잘못되어 처음에 접근한 하나의 데이터가 생성되었고 다른 하나의 데이터가 생성되지 않아서 오류가 발생기는 문제가 있었다. 문제는 먼저 처리된 데이터는 문제가 없이 생성되어 데이터의 무결성에 문제가 생기고 불필요한 데이터가 쌓인다는 것이었다. 이에 대한 해결 방법으로 트랜젝션을 사용해서 처리하였다. // detail.service.js // 집사진 생성 createDetail = async (userId, content, imgUrl, itemData) => { const t = await sequelize...

23.07.23 트랜젝션 (Transaction)

트랜잭션이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위 특징 첫 번째로, 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것 두 번째로, 일관성은 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것 세 번째로, 독립성은 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점을 가리킨다. 네 번째로, 지속성은 트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다는 점 Isolation Level과 Lock Isolation level이 선택되면 해당 격리 수준에 따라 필요한 lock 동작과 전략이 결정. 다시 말해, Isolation level은 데이터의 일..

23.07.22 클론 코딩 - 데이터 관계 설정

오늘의 집을 클론 코딩을 하기로 했는데 주어진 시간이 짧기에 다 만들 수는 없고 스코프를 줄여서 만들기로 했다. 이때 내가 담당하게 된 부분은 이미지와 글 그리고 상품 정보가 있는 페이지이다. 같은 상품 정보가 각 글마다 들어갈 수도 있어서 글이랑 상품 정보를 같이 저장하면서 유저에 대한 정보도 필요하기에 하나하나의 데이터가 너무 커질 것 같았기에 먼저 관계형 DB를 선택하고 ERD를 만들었다. 내가 가장 먼저 하게된 일은 DetailPages에서 정보를 가져오면서 그 글에 있는 상품태그에 상품에 브랜드명, 상품명, 이미지, 가격을 가져오는 것이다. 그리고 그 글의 사진에 태그 된 상품의 좌표값과 유저의 프로필사진, 닉네임, 가입날짜까지 가져와야 했는데 이를 관리하기 위해서 위와 같이 WritePacks..

23.07.21 협업과 소통

주특기를 배우고 첫 프로젝트가 끝났다. 백엔드와 프론트엔드 역할이 나누어지고 각자의 역할을 하면서 작업을 했던 것은 처음이었기에 어떻게 규칙을 정하고 함께 작업을 해야할지 몰랐다. 그리고 CICD와 HTTPS 적용이라는 과제를 받고 그것에만 몰두하다보니 소통 보단 내게 주어진 일에만 집중을 했는데 나중에 어느정도 마치고 나서 돌아보니 이게 가장 큰 실수 인 것 같다. 서로 처음이니까 에러가 나와도 내가 처리한 부분에서 에러가 나오는데 원인을 파악하지 못하고 서로 데이터를 어떻게 넘겨 받을지 무엇이 필요한지 몰랐다. 나는 만들어진 서버를 알려주며 이걸로 만들면 된다고 했는데 아니었다. 물론 나중에 일이 적응이 되면 알아서 이렇게 저렇게 데이터를 주고 받는 것을 어느정도 암묵적으로 정해진 룰에 따라 진행할 ..

23.07.20 클라우드를 언제 사용하는가

클라우드 환경의 장점 필요한 만큼 자원을 유연하게 확장하여 사용할 수 있다. 분산 운영으로 가용성과 신뢰성이 높다. 고성능 하드웨어와 최신 기술의 클라우드 및 보안 기술이 적용된다. 인프라를 직접 구축하는 것보다 경제적이다. 개발과 배포가 빨라지고 협업과 공유가 쉬워진다. 그렇다고 클라우드 환경이 무조건 좋은 건 아니니까 고려해야할 부분이 있다. 보안 및 개인정보 보호 데이터 이전 및 호환성 데이터 백업 및 복구 클라우드의 성능 및 확장성 관리 운영 및 공급자 의존 문제 클라우드 환경이 비교적 최근에 등장했고 자주 사용하게 되는데 이에 대한 장점과 고려해야할 부분에 대해서 알고 있어야겠다.

23.07.19 클라우드 환경

클라우드란, 광대한 네트워크를 통하여 접근할 수 있는 가상화된 서버와 서버에서 작동하는 프로그램과 데이터베이스를 제공하는 IT 환경을 말한다. 그런데 검색하다보면 클라우드 서비스와 컴퓨팅으로 나뉘어서 많이 나오는데 이것은 뭐가 다른 것인지 보니까 클라우드 컴퓨팅(Cloud Computing)이란, 클라우드를 이용하여 컴퓨팅 자원을 사용하는 기술적인 방법으로 말 그대로 컴퓨터의 역할을 가상의 컴퓨터가 대신 해주는 것이다. 이는 서버, 스토리지, 네트워크 등의 자원을 가상화하여 사용자에게 제공하며, 필요에 따라 이를 확장하거나 축소할 수 있다. 클라우드 서비스란 이런 클라우드 컴퓨팅을 일반적으로 IaaS(Infrastructure as a Service), PaaS(Platform as a Service) ..

23.07.18 데이터 스토리지

컴퓨터는 두 개의 저장소가 있다. 하나는 컴퓨터가 켜져 있는 동안만 작동이 되는 저장소(RAM)이고 다른 하나는 컴퓨터가 꺼져도 데이터가 남아있는 데이터 스토리지이다. 이것은 대표적인 것 중에 하나이고 저장 매체에 데이터를 저장하는 것과 데이터 저장 매체 자체를 데이터 스토리지라고 한다. 데이터 스토리지 유형 SDS : 소프트웨어 정의 스토리지, 추상화 관리 소프트웨어를 사용하여 데이터를 하드웨어로부터 분리한 다음 네트워크에 사용하기 위해 다시 포맷하고 구성하며, 비정형 데이터를 사용하는 컨테이너 및 마이크로서비스 워크로드에 적합하다. 유선 연결 스토리지 솔루션이 불가능하다는 단점이 있다. 클라우드 스토리지 : 권한이 있는 사용자가 인터넷으로 액세스할 수 있는 어딘가에 데이터를 보관하고 체계적으로 관리하..

23.07.17 HTTPS로 변경하기

그 동안에 배포에서 http로만 배포를 하고 확인을 했었다. 하지만 곧 하게될 실전 프로젝트에서는 https가 필요하다. 그래서 지금 하는 미니 프로젝트에서 https를 할 줄 알아야 나중에 시간을 아낄 수 있다. 사실 내가 만드는 것들이 얼마나 많이 이용하고 이게 뭐 문제가 되겠어 하지만 나중에 내가 최종 프로젝트에서 만든 어떤 서비스를 가지고 피드백을 받는데 누군가가 보려고 왔다가 주소에 주의하란 표시가 나온다면 거부감부터 들 것이다. 그리고 결구 취업을 위해 준비하는 과정에서 회사에서 봤을 때 얘네 프로젝트에 이것도 없네 하면서 마찬가지로 좋지 않은 인상을 줄 수 있기에 중요한 부분이라 생각이 되었다. 요즘은 http는 오히려 찾아보기 힘들기에 더더욱 이건 깔고 가야한다. 나는 일단 letsencr..

23.07.16 CICD란

CICD란 CI와 CD를 묶어서 부르는 말이다. 그럼 CI는 뭐고 CD는 뭐냐하면 순서대로 지속적 통합과 지속적 배포이다. 회사에서 여러 사람들이 어떤 서비스에 대해서 기능을 개발하고 코드를 추가하고 다시 배포를 하는데 있어서 배포 중이었던 것을 중단하고 코드를 다시 추가하고 확인하고 다시 배포하면 서비스를 사용하는 사용자도 배포하는 회사도 손해가 크다. 기능을 한 번에 다 만들어서 추가하는 건 힘들고 조금씩 조금씩 만들어서 테스트하면 그 테스트 시간도 오래 걸린다. 그리고 배포에 있어서도 매번 승인을 받아야하며 배포하다가 다시 문제가 생길 경우에 시간이 지연되면 그만큼 또 손해를 더 보게 된다. 이런 문제들을 해결해주기 위해 CI/CD를 사용한다 CI로 통합 과정에서 생기는 문제를 미리 알려주기도 하고..

23.07.15 CICD 구축하기 2

오늘은 성공은 했다. 같이 하는 분들이 어떻게 성공했는지에 대해서 많은 공유와 조언 그리고 지도를 해줘서 완료할 수 있었고 AWS에 관해서도 잘 정리된 블로그를 볼 수 있었다. 사실 어제도 봤었는데 스프링이라 나에게 적용을 못할 것이라고 생각해서 넘어갔었다. 하지만 오늘 자세히 보니까 aws에 관해서는 공통된 부분이라서 잘 넘길 수 있었고 워크 플로우도 먼저 하신 분이 공유를 해줘서 쉽게 할 수 있었다. 물론 각각에 내용들이 뭔 역할을 하는지는 알아야 나중에 내가 변형을 주고 사용할 수 있기에 그 부분에 대해서 이번만 넘기면 된다는 마인드로 가면 안된다는 것을 알고 있다. 그래도 계속 된 시도로 해결은 했다. 오늘의 배운 점 지나친 글이나 정보라도 해결이 안되는 문제라면 다시 돌아가서 천천히 다 뒤져보자.