10월, 2024의 게시물 표시

Deployment Strategy

1. In-Place Update In-place means that it does not require extra servers during the update. Pros: you don't need extra serve Cons: the traffic capacity will be reduced during the update 1. All-At-Once All At Once strategy is the basic one. You stop all the servers, and update all of your servers, and restart your service. Fatal disadvantage is, the service should be completely shut down during the update. 2. Rolling Update Rolling Update means you update your server one-by-one.  Let's suppose you have 4 servers running software ver 1.0. When you try to update those to 2.0, 1.0 1.0 1.0 1.0 -> 1.0 1.0 1.0 2.0 -> 1.0 1.0 2.0 2.0 -> 1.0 2.0 2.0 2.0 -> 2.0 2.0 2.0 2.0 2. Blue/Green Update Blue/Green Update maintains server running the sw of current version(Blue) and starts the new server that runs the sw of next version(Green). When the Green servers are able to handle all the traffics properly, and the Blue servers are killed. 1. All At Once Blue/Green Update also has a...

SW project management

이미지
Highly based on 'Scrum' methodology, but a bit modified. Epic: A unit of job Epic should be committed within a single PSI( Potentially Shippable Increments) PSI(Potentially Shippable Increments): A time box that a team uses for the achieve a certain business goal or goals. Length of PSI can vary, but it's usually 6~8 weeks. A PRD(Product Requirements Documents) should be created for each epic in Confluence Epic Ticket should be also created in Jira it appears as a single branch: e.g. feature/add_search Story: A sub-job of an Epic Story sho uld be done within less than a sprint a few Stories would be done in a single sprint if some task is too big to be done in a single sprint, you can horizontally divide the story usually happens if the story has a lot of acceptance criteria horizontally dividing means that each story should be applicable independently e.g. you want to make the map app to show restaurants near the user in order of ratings you can it divide into 'view n...

Git strategy

 develop, feature, hotfix : squash & rebase main, release: squash git-flow에서  Merge 커밋이 있으면 쉽게 되돌릴 수 있다. 모든 커밋이 빌드된다면 커밋이 많을수록 git bisect가 좋아진다.  이상적으로 커밋은 +50/-50 정도로 유지하는 것이 좋다. PR에 많은 WIP 커밋이 있지만 하나의 목표라면 Squash를 한다 commit message 규격화 - commit conventions.

Asynchronus Programming

이미지
 Asynchronus Programming In conventional 'Synchronus Programming', all the routines run sequentially. For example, when there's a code like a.run(); b.run(); c.run(); Synchronus code will run like a -> b -> c. However, in an asynchronous environment, like JS, the codes do not run sequentially. It runs concurrently. This concept may not be understood intuitively for those who first meets the Asynchronous Programming. Let's think about a machines. In contrast, asynchronous codes run like 'course of a Mario game'. All of the codes are running by itself, no matter of the input or output. Let's think of a course for a Super Mario Bros. Your Mario will move freely, but the components of the course will run regardless of the play or location of your Mario; The canon will fire the bills regularly, and the turtles will wander around his position continuously. Non-Blocking Message Queue Message Queue is a broker that sends a 'message' between different s...

Github Actions

 Github Actions consists of 3 different units. Step ⊂ Job ⊂ Workflow 1. Workflow Workflow is the biggest unit for the Github Actions. It consists of a single yml file. It defines when the workflow should be run; which file, which branch, which command and so on. It contains one or more jobs, and different workflows run in parallel. 2. Job Jobs are the chunk of the steps which is for certain purpose like test, build, or deploy. It defines the environment in which the steps should be run and permissions the GITHUB_TOKEN which the steps have. Different jobs run in parallel by default, but you can make them run in sequence using 'needs' keyword: if job A has job B in its 'needs', job A runs after the job B is completed. *GITHUB_TOKEN is the access token that  is used to access your Github Apps like contents, page, and metadata. 3. Step Steps are the commands that defines the actual actions. It can defined in the way of terminal command or other keywords. You can type termin...