분류 전체보기(113)
-
Spring Boot - 스케줄러 사용해보기 1. FixedDelay vs FixedRate
들어가며 최근에 있었던 일입니다. 제가 만든 컴포넌트를 코드 리뷰를 통해 팀원들과 공유하는 자리를 가졌었는데, 스케줄링 된 작업에 대해서 이런 질문이 들어왔었습니다. 어라.. 저 작업이 0.5초마다 실행되게 설정되어 있는데요, 만일 작업의 수행속도가 0.5초를 넘기면 어떻게 되나요? 다음 작업이 무시되나요? 아니면 스레드가 하나 더 생겨서 어떻게든 0.5초마다 계속 실행되도록 하나요? 아니면 밀린 만큼 연달아 실행하나요? 이 질문은 중요했습니다. 왜냐하면 해당 작업은 무조건 순차적으로, 동시가 아닌 딱 1번씩만 실행되어야만 하는 작업이었기 때문이죠. 저는 스프링의 스케줄링에 대해 대략적인 조사를 해 보았을 때의 기억에 의존해서, "제가 알기로 기본 설정이 싱글 스레드이기 때문에, 수행 시간이 밀린다고 멀..
2020.02.23 -
디자인 패턴 2. 스트래티지 패턴(Strategy Pattern)
스트래티지 패턴이 뭔가요? 세상 모든 지식을 알고 있는 위대하신 위키 백과님은 스트래티지 패턴(== 전략 패턴)을 아래와 같이 정의하고 있습니다. 전략 패턴 또는 정책 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 전략 패턴은 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. 저 글귀를 읽고 '아! 그렇구나, 스트래티지 패턴 공부 끝!' 하고 잠자러 들어갈 수 있는 사람은 애초에 이 포스팅을 읽고 있지 않겠죠. 저 설명에서 캐치하고 가야할 포인트는 두 가지입니다. 실행 중에 알고리즘을 선택한다. 이 두 가지가 스트래티지 패턴의 골자입니다. 이제부터 스트래티지 패턴이 무엇이며, 어떻게 쓰일 수 ..
2020.02.16 -
디자인 패턴 1. 소개
디자인 패턴이 뭔가요? Design Pattern이란 말만 들었을 때에는, 뭔가 그림을 그려야 할 것 같지만 사실 디자인은 단순히 그림을 그리는 의미가 아니라 '설계'의 의미를 가지고 있습니다. 즉, 디자인은 설계에 해당합니다. 그렇다면 프로그래밍에서 디자인 패턴은 어떤 의미일까요? '프로그램 설계 유형' 정도로 풀어서 쓸 수 있지 않을까요? 프로그램을 설계한다는 의미는 단순히 코딩을 하는 것 그 이상의 문제를 이야기합니다. 진부하지만 회원가입의 예를 들어보고자 합니다. 회원가입에는 보통 성별을 남/녀로 받습니다. 그렇다면 회원 정보를 담을 클래스를 만들 때, 어떻게 해야할까요? 일단 첫 번째 예를 봅시다. ManMember와 WomanMember를 각각 Class로 만들었습니다. 이름과 나이를 각각 멤..
2020.02.08 -
디자인 패턴 0. 공부 시작
들어가며 작년부터 디자인 패턴의 필요성을 느끼고 있었습니다. 단순한 계기는 취직 준비에 필요하단 생각이었고, 현재는 개인 개발 역량을 향상시키는 데에 도움을 줄 수 있을 것이라 여기고 있습니다. 주위에서 가끔 어떤 사람들이 '디자인 패턴을 굳이 공부할 필요는 없다'고 말하기도 합니다. 경력직에서도 디자인 패턴을 잘 모르는 사람들이 있다면서요. 그러나 동시에 '비록 디자인 패턴을 모르더라도, 막상 그 사람들이 작업하는 것을 보면 디자인 패턴을 체화하고 있더라'는 말까지 덧붙였습니다. 즉, 디자인 패턴을 따로 시간을 내서 공부를 하든, 하지 않든, 결국에는 필요한 만큼은 스스로 습득하게 된다는 내용이었습니다. 이 말을 종합해보았을 때, '꼭 안해도 된다.' '하면 좋다' '하면 안 되는 건 아니다' 정도의 ..
2020.02.08 -
왜 자바 Spring만 뽑나요? 꼭 배워야 하나요?
들어가며 취준생 시절 때부터도 쭉 간직해 온 의문이 있었습니다. 내로라하는 대기업들의 구직 공고를 보면, 항상 따라오는 조건들이 있었죠. Java 언어 사용이 능숙한 분 Spring Framework 개발 경험이 있으신 분 Java를 배우긴 했지만, 백엔드에 사용해본 적은 없었기에 이 부분은 항상 지원에 걸림돌이 되곤 했습니다. 도대체 자바 스프링이 뭐하는 녀석이길래 이 기업 저 기업에서 다 찾을까요? 나름대로 정리한 내용을 글로 옮겨보기로 했습니다. 그리고 '그렇다면 Spring을 배워야만 할까?' 하는 고민에 빠지신 분들께 제 의견을 전달해보고자 합니다. 주의사항 : 필자는 백엔드 개발에 이제 막 뛰어든 초짜입니다. 백엔드의 유구한 역사에 대해서는 당연히 잘 모르며, 제가 추측한 이유들도 잘못된 부분..
2020.01.26 -
라즈베리파이로 집에서 서버 구축하기 5. 유동 IP로 DNS 설정하기 - Cloudflare
들어가며 정말 오랜만의 포스팅입니다. 이번 글은 집에서 서버를 구축할 때, 유동 IP로 어떻게 하면 DNS를 설정할 수 있을지 그 방법에 대해서 작성해봤습니다. 들어가기 전에, 이 글은 이미 공유기에서 포트포워딩 설정이 끝나있으며, 서버 도메인을 하나 가지고 있다는 것을 가정하고 작성되었습니다. 포트포워딩에 대한 개념, 설정 방법은 검색하셔서 참고하시면 될 것 같습니다. 유동 IP의 한계 유동 IP란, 고정 IP의 반대되는 개념이며, 중간에 인터넷 공급자에 의해 언제든지 다른 IP로 바뀔 수 있는 IP를 말합니다. 현재 대세인 IPv4 체계로는 이론적으로 4,294,967,296개의 IP가 존재할 수 있으나, 어디까지나 이론일 뿐이고, 실제로는 이보다 더 적은 IP가 사용되고 있고, 현재 인터넷 이용량에..
2020.01.11