전체 글
뭐든 공부하면 언젠간 다 도움이 될거야트랜잭션이 뭐야?트랜잭션은 sql이 적용될때데이터를 잘 처리할 수 있도록 보장해주는 친구이다예를 들어윤철이가 채연이한테 10만원을 계좌 이체할때윤철 100만원채연 10만원이라면update 윤철계좌 100만원 - 10만원update 채연계좌 10만원 + 10만원이 일어난다고 했을때, 순서대로 잘 처리될 수 있도록단일하게 논리적으로 처리할 수 있는 작업 단위를트랜잭션이라고 한다Autocommit그전에 autocommit 도 짚고 넘어가보자원래 보통 dbms는 autocommit이 enabled 값이default다그래서 sql를 실행할때 기본적으로commit이 발생한다.근데 명시적으로 transaction start를 하게 된다면autocommit은 false 상태가 된다명시적으로 시작했던 트랜잭션의 comm..
EXPLAIN 명령어는 SQL 쿼리의 실행계획을 확인하기 위해 사용된다. ( 사실 나도 실무에서는 안(못)써봤다.. ) 실제로 쿼리에 대해서 확인해보고 속도를 조절하기 위해서 쓸 때에는EXPLAIN을 찍고 쿼리가 어떻게 실행될지, 어떤 인덱스가 사용될지, 등의각 단계에서의 예상비용등을 출력해보고 확인해서 쿼리를 수정한다. MySQL을 기준으로 정리해볼 예정이다 1. EXPLAIN 명령어 쓰는법예를 들어 , 아래와 같은 SELECT 쿼리가 있다고 가정하자.SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York'); 이 쿼리에 대해 실행 계획을 확인하려면, EX..
최근 모노레포라는 말을 여러 개발 커뮤니티에서 들을 수 있었다.레포별로 다른 프로젝트를 운영하고 있으나,새로운 서비스(프로젝트)를 구축하기 위한 비용이나 중복된 코드와, 프로젝트 관리에 대한 비효율 증가로 인해모노레포로 돌리려는 것을 고안하고 있다 등의 내용이었다. 예전에는 백엔드 레포랑, 프론트엔드 레포를 따로 나눠서 별도의 리포지토리에서 관리하는 방식이 일반적이었다.이렇게 각기 다른 레포에서 프로젝트를 관리하는 것을 멀티레포라고 하는데,아무래도 프로젝트가 독립적으로 관리되므로, 프로젝트간의 의존성 문제가 줄어든다는 장점이 있다. 하지만 이제 그런 프로젝트들이 점점 대규모로 성장해가거나, 강력한 협업이 필요한 환경에서는 모노레포가 더 효율적일 수 있다.그래서 모노레포와 멀티레포에 대해서 조사해봤다! 모..
import discordfrom discord.ext import commandsimport yt_dlp as youtube_dlimport asynciointents = discord.Intents.default()intents.message_content = Truebot = commands.Bot(command_prefix='!', intents=intents)@bot.eventasync def on_ready(): print(f'Logged in as {bot.user}')@bot.command()async def join(ctx): if ctx.author.voice: channel = ctx.author.voice.channel await channel.c..
내가 만든 라라벨 프로젝트를 가볍게 배포?를 하고 싶었다일단 라이트세일에 내 프로젝트를 올려보자! 라고 생각했다 원래 사실 aws ec2는,, 내가 싫어한다.., 왜냐! 공부를 안하고 그냥 1년 무료라고해서 쓰다보면 어느순간돈이 폴랑폴랑 날아가기 때문이다내가 모르는 비용들이 자꾸 한두개씩 튀어나와서 날 괴롭혔다; 그래서 3년전에 aws가 무서워져서 탈퇴를 했다가라이트세일이라는 좋은 친구가 나왔다고 해서 맘먹고 다시 aws를 가입했다. aws ec2와 lightsail의 차이는 아래 글이 잘 설명해줘서 가져왔다https://www.smileshark.kr/post/what-is-amazon-lightsail-ec2-vs-lightsail-comparison 아마존 라이트세일(Amazon Lightsail)..
- 이 책은 가상면접사례로 배우는 대규모 시스템 설계 기초에 있는 내용을 기반으로 작성하였습니다 프로젝트를 만들었다고 가정해보자 (아래 예제는 제가 실제로 구축한건 아님니다..) 1. 처음에 내가 작은 소소한 프로젝트로 A프로젝트라는 것을 만들어서 서버를 띄우고, dns 설정도 해주고 줄기차게 프로젝트를 오픈했다. - 웹브라우저로 그 페이지를 사람들이 접속한다면,- DNS를 통해서 IP를 받아오고, 그 IP주소로 HTTP 요청이 들어간다, 그 요청을 웹서버가 응답으로(페이지로) 반환한다. 2. 엥 ! 근데 사람들이 조금씩 더 들어오고, 그 사람들의 정보를 저장해야 할 일이 생겼다. 데이터베이스가 필요해졌다. - 무슨 데이터베이스를 쓸 지 정해야한다. 관계형 데이터베이스? 비관계형 데이터베이스?- 수직적 ..
관점지향프로그래밍,,트랜잭션 공부하다가 튀어나왔는데자바를 역시 공부해야할 것 같다aop검색하니까 스프링 aop가 가장 먼저 튀어나온다자바.. 그는 도대체 얼마나 엄청난 친구인 것인가어느날 그냥 궁금증이 들었다라라벨에서 여러 데이터 커넥션 별로 트랜잭션을 설정하고 중간에 터지게되면여러 데이터 커넥션이 다 롤백이 될까? 하고 이런 코드를 단톡에 날렸는데,,public function funcName(){ DB::connection('connA')->beginTransaction(); DB::connection('connB')->beginTransaction(); DB::connection('connC')->beginTransaction(); try { DB::connecti..
라라벨을 처음시작할때는 정말 문외한이었고사실 지금도 너무 모르는 기능들이 많다그래서 처음에 개발할때는 모든 패턴의 시작인 MVC패턴을 사용했다. 근데 ,, 회사에서 개발하면서 뭔가 답답함을 느꼈다회사 프로젝트에서는 includeFunction이라고해서 이제 뭔가 하나의 비슷한 기능들을 모아놓은 controller들이 있는데이걸 다른 controller에서 use해서 쓰는 형태가 뭔가 이상하지 않은가? 하는 생각이 들었다 그래서 찾아보니 나온 것이 service 패턴..!!사실 repository도 포함해서 나누면 좋은데 ㅠㅠ소스를 현재는 더이상 크게 건들지 못하는 상황이라일단 controller로 다 섞여있던 친구들 중 특정한 기능만을 모아놓은 controller들을 service로 빼기로 했다 serv..
라라벨 프로젝트에서 service 패턴을 추가하면서 DI 를 주입해라~ 같은 말을 읽게 됐다 뭔소린지 이해가 안갔다.. 그리고 생긴 것 도 이해가 안갔다.. 헤매던 중 가장 이해가 잘 갔던 글을 소개한다 https://mangkyu.tistory.com/150 [Spring] 의존성 주입(Dependency Injection, DI)이란? 및 Spring이 의존성 주입을 지원하는 이유1. 의존성 주입(Dependency Injection)의 개념과 필요성 [ 의존성 주입(Dependency Injection) 이란? ] Spring 프레임워크는 3가지 핵심 프로그래밍 모델을 지원하고 있는데, 그 중 하나가 의존성 주입(Dependency Injmangkyu.tistory.com 다만 여기는 spring ..